PowerQuery(パワークエリ)でデータを結合する|マージクエリと追加クエリ

Excel

PowerQueryのデータの結合のメモです。

PowerQueryで共通項目をキーとして列方向にデータを結合には「クエリのマージ」を使う。

例えば、日毎のコロナウイルスの検査数のデータと陽性者数のデータの2つのデータを結合する場合に使える。

単純にデータを追加する場合は「クエリの追加」を使う。

例えば、お店の売上げのデータが月毎で存在しているとする。
1年間のデータにまとめたい場合は1~12月のデータを追加クエリで結合する。

PowerQueryのマージ

PowerQueryエディターを起動させる。

「データ」→「データの取得(データの取得と変換)」→「PowerQueryエディターの起動」をクリック

前回Webから取得したコロナウイルスの陽性者数と「検査数」をマージする。(下記リンク参照)

PowerQuery(パワークエリ)で外部データを取得する方法

陽性者数と同様の方法で検査数のデータも下記よりPowerQueryで取得する。

新型コロナウイルス国内感染の状況

「pcr_positive_daily」が陽性者数のデータ、「pcr_tested_daily」が検査数のデータである。

PowerQueryエディターの「ホーム」→「クエリのマージ(結合)」「新規としてクエリをマージ」をクリック。
(現在選択しているクエリを上書きする場合は、「クエリのマージ」を選択する。)

下の「マージのフォーム」が表示されるので必要な作業を行う。

①下段の空白のドロップボックスでマージするクエリ(pcr_positive_daily)を選択する。
②2つのクエリの照合列(今回は日付)を選択する(選択すると緑色に代わる)。
③統合の種類を「左外部(最初の行すべて、および2番目の行のうち一致するもの)」を選択する。(結合の種類の詳細は後述する)

ここまで設定すれば、下の画像のようになるので、「OK」ボタンをクリックする。

下の画像のように、新しいクエリ「マージ1」ができる。
「pcr_positive_daily」の値が「Table」となっているので、「pcr_positive_daily」の右側のボタンをクリックする。

下の画像のフォームが出てくるので「日付」のチェックを外して「OK」をクリックする。

これで、Tableと記載されていたセルに陽性者数が表示される。

「閉じて読み込み」をクリックすれば、sheetにマージした結果が表示される。

これで、マージは完了。

マージしたデータのデータをさらに加工したり、グラフを作ったりできる。

他のデータもマージしたい場合は、同じ作業を繰り返せばOK。

マージの種類

マージの補足。マージには6種類ある。

  • 左外部(最初の行すべて、および2番目の行のうち一致するもの)
  • 右外部(2番目の行すべて、および最初の行のうち一致するもの)
  • 完全外部(両方の行すべて)
  • 内部(一致する行のみ)
  • 左反(最初の行のみ)
  • 右反(2番目の行のみ)

下の2つのデータを各マージ方法を行う。

左の表
右の表

「左の表」に「右の表」をマージする。

照合列のデータは3つに分けれる。

1:左の表のみ
2:左の表と右の表の両方にある
3:右の表のみ

実際にマージした結果は下記になる。

左外部

1,2のみ表示

右外部

2,3のみ表示。ただし、照合列の3はnullとなる。

完全外部

1,2,3のすべて表示。ただし、照合列の3はnullとなる。
左の表に値がないものは、右の表に値があってもnullとなる。(Tableの展開前の照合列にはあるが、このままでは使えない)
右の表の照合列の値を使用する場合は、カスタム列を作成して左の表と右の表の照合列を統合した列を作るなどの工夫が必要となる。

内部

2のみ表示。

左反

1のみ表示。ただし、右の表に1はないため右の表.価格はnullとなる。

右反

3のみ表示。

マージの補足

マージは下のメニューからもできる

マージしたいデータを選択→「クエリ」→「結合」

マージのフォームが立ち上がる。以降は上記で説明した通りの手順でマージできる。

PowerQueryの追加

PowerQueryの追加は複数のデータを行方向に追加する。

PowerQueryエディターで追加元のクエリを選択し、「ホーム」→「クエリの追加」をクリック。(クエリを新規で作りたい場合は、「クエリを新規クエリとして追加」を選択)

追加するデータが1つの場合は「2つのテーブル」を選択したままで、2つ目のテーブルに追加したいクエリを選択し、「OK」ボタンをクリック。

追加するデータが2つ以上ある場合は、「3つ以上のテーブル」を選択することで1回で複数のデータを追加することが出来る。

「3つ以上のテーブル」を選択する。利用可能なテーブルの中から追加したいクエリを選択し、「追加」ボタンをクリック。追加したいクエリの全てが追加するテーブルに入ったら、「OK」ボタンをクリック。

行方向に結合されたクエリができる。

マージと同じように、閉じて読み込むをクリックするとsheetに追加したデータが表示されます。

追加の補足

追加は下のメニューからもできる

追加したいデータを選択→「クエリ」→「追加」

追加のフォームが立ち上がる。以降は上記で説明した通りの手順で追加できる。