今回は、ふたつのデータ表を連結する「クエリの追加」の使い方を紹介していこう。操作手順は特に難しくないが、色々と注意すべき点があるので、その仕組みをよく理解しておく必要がある。
ふたつのデータ表を連結するには?
以前紹介した「クエリのマージ」(第46〜50回参照)は、参照列を基準にふたつのデータ表を結合する機能となる。そうではなく、もっと単純にふたつのデータ表を連結してくれる「クエリの追加」という機能も用意されている。今回は「クエリの追加」の使い方と注意点を紹介していこう。
以下の図は、あるイベント運営会社の「営業1課」が管理しているイベントホールの一覧だ。近隣のイベント会場の名称や担当者、メールアドレス、電話番号、住所といったデータが記録されている。
同社の「営業2課」でも、似たような一覧が独自に管理されている。こちらのデータ表にも、各イベントホールの名称、住所、担当者、メールアドレス、電話番号が記録されている。
このように、同じ目的に使用するデータ表がいくつも存在しているケースもある。効率的な観点から見れば、これらのデータ表をひとつにまとめて、一元管理するのが理想といえる。そこで、これらふたつのデータ表をひとつにまとめる作業を考えてみよう。
今回の例の場合、それぞれのデータ表は以下の順番で各列が並べられている。
- 営業1課:「名称」→「担当者」→「メール」→「TEL」→「住所」
- 営業2課:「名称」→「住所」→「担当者」→「メール」→「電話」
列の並び順が異なるため、コピー&ペーストによりデータを一気に連結することはできない。データを連結するには、各列を個別にコピー&ペーストしていく必要があり、少しだけ手間がかかる。
このような場合に活用できるのが「クエリの追加」という機能だ。この機能を使うと、ふたつ(または3つ以上)のデータ表を自動連結することが可能となる。ということで、今回は「クエリの追加」の使い方と注意点を紹介していこう。
「クエリの追加」の実行手順
以前紹介した「クエリのマージ」と同様に、「クエリの追加」を使用するときも、それぞれのデータ表をクエリとして取得しておく必要がある。ここでは「営業1課」のデータ表に「営業2課」のデータを追加する場合を例に話を進めていこう。
まずは「追加するデータ」となる「営業2課」のデータ表を「Power Query エディター」に取得する。内容を把握しやすいように、このクエリには「営業2課」という名前を指定した。
このクエリはExcelに出力しないので、接続専用として保持する。「閉じて読み込む」の▼をクリックし、「閉じて次に読み込む」を選択する。
データ表の出力方法を指定する画面が表示されるので、「接続の作成のみ」を選択し、「OK」ボタンをクリックする。
これで「営業2課」のデータ表を接続専用のクエリとして保持できた。
続いて、「営業1課」のデータ表を「Power Query エディター」に取得する。こちらのクエリには「営業1課」という名前を指定した。
このデータ表に、先ほどクエリとして保持した「営業2課」のデータを追加する。「ホーム」タブにある「クエリの追加」をクリックする。
追加するクエリ(データ表)を指定する画面が表示されるので、「営業2課」のクエリを選択し、「OK」ボタンをクリックする。
現在のクエリ(営業1課のデータ表)に、指定したクエリ(営業2課のデータ表)が追加される。これでふたつのデータ表を連結できたことになる。
このように「クエリの追加」を使うと、同じような形式のデータ表をひとつに連結することが可能となる。ただし、上手に活用するには、その動作の仕組みをよく理解しておく必要がある。上図に示した例も一部の列で不具合が発生している。続いては、「どのようにデータ表が連結されるのか?」を詳しく解説していこう。
データは何を基準に連結される?
「クエリの追加」を使ってデータ表を連結した場合は、各列の「列名」を基準にデータの追加が行われる。このため、列の並び順が異なっていても問題なくデータ表を連結することが可能である。
ただし、列名が異なる場合は、それぞれが「別の列」として扱われることに注意しなければならない。先ほどの連結結果を見ながら具体的に解説していこう。
連結前のデータ表を見ると、「営業1課」は「TEL」という列名で電話番号のデータが記録されているのを確認できる。一方、「営業2課」のデータ表では「電話」という列名で電話番号のデータが記録されている。両者の列名は異なるため、それぞれが「別の列」として扱われることになる。
たとえば、「TEL」の列には「営業1課」のデータだけが記録されており、「営業2課」のデータに該当する部分はnull(空白)になっている。
その一方で、データ表の右端に「電話」という列が追加されているのを確認できる。こちらは「営業1課」のデータに該当する部分がnull(空白)になっており、「営業2課」のデータだけが記録されている。
これらふたつの列は「列名」が異なるものの、それぞれのデータが示す内容は同じと考えられる。よって、本来ならデータを1列に集約して管理するべきだ。
こういった不具合を回避するには、あらかじめ列名を「TEL」または「電話」に統一しておく必要がある。この作業は、データ表を「Power Query エディター」に取得する前に行ってもよいし、データ表を「Power Query エディター」に取得した後に列名の統一を行ってもよい。
いずれにしても、正しくデータを連結するには「列名を統一しておくのが基本」ということを覚えておく必要がある。
分割されている列の結合
データ表を連結した後に、列名が異なっていたという不具合に気付くケースもあるだろう。続いては、この対処方法を紹介していこう。
まずは、ふたつの列が隣り合うように列の順番を並べ替える。この操作は、列名を左右にドラッグすると実行できる。
続いて、ふたつの列を同時に選択し、「変換」タブにある「列のマージ」をクリックする。
列の結合方法を指定する画面が表示されるので、区切り記号に「なし」を選択し、新しい列名を入力してから「OK」ボタンをクリックする。
すると、ふたつの列が結合され、データを1列に集約することができる。
以上が、列名が異なっていた場合の対処方法となる。列名が異なっていたときは、一方の列に「連結前のデータ」がそのまま残り、もう一方の列は必ずnull(空白)になる。これらを「区切り記号なし」で結合すると、結果として「連結前のデータ」だけを1列にまとめることが可能となる。
「クエリの追加」を使用するときは、あらかじめ列名を統一しておくのが基本であるが、こういった対処方法があることを知っていれば、データ表の連結後であっても不具合に対処できるようになる。念のため、覚えておくとよいだろう。
データの重複について
そのほか、「クエリの追加」を行ったときはデータの重複にも注意する必要がある。先ほど連結したデータ表をExcelに出力した状態で詳しく見ていこう。「ホーム」タブにある「閉じて読み込む」のアイコンをクリックする。
データ表がExcelに出力される。このままでは重複データを見つけにくいので、「名称」の昇順にデータを並べ替えてみよう。
すると、以下の図のようになる。この図を見ると、「エテルナ シティホール」と「セレスティス南青山」、「フレアライト会館」の3つのデータが重複して記録されていることを確認できる。
これらは「営業1課」と「営業2課」の両方で管理されていたデータとなる。「クエリの追加」は単純にデータを追加するだけの機能でしかなく、データの重複に関するチェック機能は設けられていない。よって、同じデータが重複して記録されてしまう可能性がある。
このままではトラブルの原因になりかねないので、データの重複を解消する必要がある。この作業は簡単とはいえないが、パワークエリに用意されている機能を使って、ある程度は効率化することが可能だ。これについては、次回詳しく紹介していこう。