ACCESS やリレーショナル データベースをかじったことのある人なら「リレーション」についてなんとなくでもご存じかと思いますが、そうでなければ???という感じだと思います。
Power BI はデータ ウェアハウスについての考え方、スタースキーマなどを知っていると高度に活用できるのですが、「まず今 Excel で苦労しているのを効率化したい!」という方にそこから勉強しろというのはちょっと酷かな、とも思います。とりあえず Power Query の「クエリのマージ」のやり方を知っていただくと、データをつなげることを手っ取り早く始めることができます。
クエリのマージ
「クエリのマージ」は2つのテーブルを、キーとなる列 (共通であることを特定できる列) を使って1つのテーブルにすることを言います。Excel だと VLOOKUP なんかを使う操作です。
例:社員テーブルと部門テーブルは「部門ID」がキーとなります。
社員テーブル
社員番号 | 社員名 | 部門コード |
---|---|---|
1 | 赤井 | 101 |
2 | 青木 | 101 |
3 | 黒田 | 201 |
部門テーブル
部門コード | 部門名 |
---|---|
101 | 営業 |
201 | 人事 |
301 | 総務 |
Power Query エディターで、社員テーブルのクエリで「クエリのマージ」を実行すると、このような画面が出てきます。
「部門コード」列がキーになるので、それぞれのテーブルで部門コードをクリックして選択しています。
この例ではシンプルに、キー列が1つの場合で説明していますが、複数の列でキーとすることも可能です。
その場合は、クリックした順に列名に数字が付くので、同じデータの列同士が同じ数字になるようにクリックします。
「社員テーブル」に「部門テーブル」という名前の列が追加されています。この「部門テーブル」という列名の右側の矢印のアイコン「↰↱」をクリックすると、部門テーブル内のどの列を追加するかを選択できます。
「部門コード」は重複するのでチェックを外しています。また、[元の列名をプレフィックスとして使用します]のチェックも外しています。(チェックを入れておくと列を追加するときに「テーブル名.列名」の形式の列名が付きます。)
この状態で[OK]をクリックすると、下図のように社員テーブルに「部門名」が追加されます。
どちらかのテーブルのキー列はユニーク (一意:重複がない) であることが望ましいです。この例の場合、部門テーブル側にも部門コードの重複があると、その部門コードのデータが複数行作られてしまいます。
社員テーブルに部門テーブルのデータを入れたので、部門テーブルは不要になりますが、削除してしまうと社員テーブルがエラーになってしまいます。そこでクエリの「部門テーブル」を右クリックし、[読み込みを有効にする]の左側のチェック ☑ を外します。
こうすることで、不要になった部門テーブルがレポート作成画面に表示されなくなり、更新時にデータのインポートも行われません。(社員テーブルには読み込まれるのでご安心ください。)
「クエリのマージ」については @yugoes1021 さんの こちらのQiita に詳しく載っていますので、ここでは割愛します。
また、弊社メンバーのこちらのブログ記事では Excel の Power Query を使って、よりディープに解説しているので、本記事に物足りなさを感じる方はこちらもぜひご覧ください。
「クエリのマージ」のすぐ下にある「クエリの追加」は、同じ形の複数のテーブルのデータを足しこむ操作です。同じフォーマットの複数のテーブルを1つにまとめるような場合に使用します。SQL でいうところの UNION です。
データ量が多くなるとクエリのマージはパフォーマンスに響くこともありますが、Excel 手作業から脱却するような場合においては有用です。Power Query エディターは、データベースやSQLになじみのない方、Excel 関数で頑張っている方にもとっつきやすい部分なので、ぜひ活用してみてください。