ChatGPT4でも教えてくれない?Power Queryのクエリの追加とSQLのUnionの違い

PowerBI

PowerQueryのクエリーの追加機能

PowerQueryって便利で色々活用できているのですが、ふと『クエリの追加』ってSQLで言う何だったっけ?が気になりまして色々調べてみました。

Power Query クエリの追加
Power Query クエリの追加

 挙動としては、2つ以上のテーブル(PowerQueryではクエリ)を縦に結合するのでUNIONかなと言うイメージなのですが、微妙に細かい差分があるので厄介です。

Power query クエリの追加 SQL UNION 違い

 ここはGoogle先生に "Power query クエリの追加 SQL UNION 違い"を教えをご依頼してみましたが、なんと!まともな答えが返ってこない。多分、query とクエリと言う検索フレーズがごちゃごちゃしてしまう事が原因なのかもしれません。

 BING Searchで検索してみたのですが、こちらもBINGOな答えは返ってきません。

GPT4だったら何とかなるはず!

と思って、Bing Search チャット機能を使いましたが…

Power query クエリの追加 SQL UNION 違い
Power query クエリの追加 SQL UNION 違い

 Microsoft製品のQAなんだから、ちゃんとしっかり回答してくれ!と思ったのですが、意外に回答してくれません。詳しくないのか、誰も興味を持たないのか…

Power Queryにおけるクエリの追加の挙動

仕方がないので、自分でデータを作って挙動をテストしてみました。

結論的としては、

  • 2つ(以上)のシートを上下に並べる
  • 重複行があっても気にせず並べる
  • 同名の列が存在しない場合は、null(値無し)になるが結合する事が出来る

と言うイメージになりそうです。

SQLのUNION

SQLのUNIONは2つのクエリ結果を縦に結合する事が出来ます。

例えば、SQL Serverで、adventureworskのDBを使って、下のような2つのクエリ

SELECT [ProductID]
,[Name]
,[ProductNumber]
,[StandardCost]
,[ListPrice]
,[Size]
FROM [AdventureWorks2019].[Production].[Product]
Where [Size]='42'

SELECT [ProductID]
,[Name]
,[ProductNumber]
,[StandardCost]
,[ListPrice]
,[Size]
FROM [AdventureWorks2019].[Production].[Product]
Where [Size]='48'

をUNIONして、下のような感じで2つのクエリ結果を縦に結合する事ができます

UNIONのサンプル

また、片方のクエリ内の一部の列を削除してしまうと下のようにエラーを返します。

SQL UNIONエラーサンプル
SQL UNIONエラーサンプル

UNION 演算子、INTERSECT 演算子または EXCEPT 演算子を使用して組み合わされたすべてのクエリには、クエリの対象となるリスト内の式と同じ数の式を含める必要があります。

また、この演算子には、UNION/UNION ALLと言う物があり、UNIONだけだと重複行をマージしてしまいます。(これはこれで便利なのですが)

まとめ

  • Power Queryにおけるクエリのマージは複数のシートを上下に並べる(結合する)機能
  • SQLのUNION ALLに似た挙動を取る
  • 列名が一致しなくてもSQLのようにエラーにならない、その代わり、NULLになった状態で結合される

事が分かりました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です