Power Queryのクエリにおける「複製」と「参照」の違い

Power BIやExcelでPower Queryを使い、元のデータを読み込んで加工した後、似たような処理を行いたい場合に「複製」を使っていました。

ある日、操作によっては「複製」より「参照」の方が便利なことに気づいたので、それぞれの使い方や違いについて自分なりにまとめてみました。

本記事で利用しているデータについて

本記事では、サンプルのデータとして、気象庁の「東京の最近1年の日別気温」を使用しています。

www.data.jma.go.jp

なお、あくまで「複製」と「参照」の違いを説明するためにデータをPower Queryで加工していますが、実際にはPower Queryで加工するよりもグラフ等で集計した方がいいものも含まれています。

クエリの「複製」

クエリの複製や参照は、クエリエディタ上でクエリを右クリックことで利用可能です。まずは複製を使ってみましょう。

クエリの「複製」を利用する

例えば、元データのCSVを読み込むと、そのままでは列名が無かったり、空白の行があったりと、データとして利用しにくい形式になっています。

これを、いくつかのステップを経て、データとして扱いやすい形式に変換したとします。

ここで、「季節単位の平均最高気温」と「年月単位の平均気温」をグループ化する必要が出たとします。

ですが、例えば季節単位でグループ化してしまうと、年月の要素は削除されてしまいます。

こんな時に、「複製」を利用すると、片方を「季節単位の平均最高気温」、もう片方を「年月単位の平均気温」として利用する事が出来るようになります。

複製後、それぞれのクエリでグループ化の処理を行った結果は以下のようになります。

クエリの「複製」の特徴

クエリの複製を行った場合、元のファイルからの変更を行ったステップをそれぞれで持ちます。

共通の処理から分岐できるのはいいのですが、クエリの複製後は共通部分の処理内容も個々のクエリで持つため、片方のクエリの変更内容はもう片方には反映されません。

そのため、例えばソースファイルを変更するなど、共通する処理に変更が発生した場合、それぞれのクエリで変更する必要が発生します。もし変更忘れがあった場合、データが食い違ってしまうリスクもあります。

クエリの「参照」

共通する処理に変更が発生した場合でも、それぞれのクエリに変更を反映させる必要がある場合は、「参照」が便利です。

クエリの「参照」を利用する

データとして扱いやすい形式にするところまでは先ほどと同じです。

ここから、今度は「参照」を実行します。

クエリが追加されるところまでは同じですが、ステップが1つだけになっています。ここが大きな違いです。

「季節単位の平均最高気温」と「年月単位の平均気温」によるグループ化を、参照を利用して実現するとこのようになります。

クエリが一つ増えている以外は、得られる結果は変わりません。ではどのような違いがあるのか、次の章で見て行きましょう。

クエリの「参照」の特徴

クエリの参照を行った場合の処理を先ほどと同様に図で説明すると以下のようになります。

「参照」の場合、「複製」と異なり、処理内容を個々のクエリでは持ちません。

そのため、例えばソースファイルを変更するなど、共通する処理に変更が発生した場合、元のクエリさえ編集してしまえば、それぞれのクエリで変更する必要がありません。

半面、参照元の変更が参照先にすべて影響を与えることになるので、変更内容によっては矛盾が発生し、参照先クエリがすべて失敗する、というリスクもあります。

例えば、元クエリで[季節]という列名を[Season]に変えると、参照先のクエリがエラーになります。

特に参照を何段階にも行うと、エラーの特定が難しくなることがあります。

おわりに

これまではあまり意識せず「複製」ばかり使っていたのですが、「参照」を知って使い分けが出来るようになったことで、管理が楽になりました。ケースに応じた使い分けの参考になれば幸いです。

なお、「複製」で作ってしまったPower Queryを後から「参照」ベースに修正する事も可能です。その方法については別記事で解説する予定です。

執筆担当者プロフィール
舟越 匠

舟越 匠(日本ビジネスシステムズ株式会社)

人材開発部に所属。社内向けの技術研修をしつつ、JBS Tech Blog編集長を兼任。2024年8月からキーマンズネットPower Automateの連載を開始。好きなサービスはPower AutomateやLogic Apps。好きなアーティストはZABADAKとSound Horizon。

担当記事一覧