概要
複数のテーブルを縦に結合したいときは以下のようにUNION関数を用いることで解決します。
結合テーブル = UNION('テーブル1', 'テーブル2')
ただこれだけの処理なんですが、ここの結合周りの仕様で結構躓いたので備忘録として残しておきます。
具体例を用いて確認
UNIONの仕様確認
例として二つの食べ物テーブルを用意しました。
この二つのテーブルをUNION関数で結合すると以下のようになります。
テーブルビューでの並びをそのままに縦に結合します。
同じカラム名同士で結合してくれたりはしません
躓いた仕様
じゃあ、列の並びを揃えればいいじゃないかとなるんですが、PowerBIのテーブルビューでは列の並び替えを行うことはできません。
テーブルビューでの列の並び替えは不可
じゃあ、クエリを発行する際に並び替えをすれば良いじゃないかとなるんですが、クエリを発行する際の列の並び順はテーブルビューの並びに影響を与えません。
クエリを発行する際の列の並び順とテーブルビューの並びは関係無い
解決方法(旧)
いろいろ試しましたが、元のファイル(xlsxやcsv等)の並び順を直すしか見つかりませんでした。
追記:コメントで解決方法を教えていただいたため、後述します。
UNIONで結合するファイル群は、読み込み前から列の並びを揃えておく
また、元データの並び順を揃えるだけではテーブルビューに並び順の反映がされないので、現在使っているデータ取得のクエリを消して再度作り直す必要があります。
元ファイルのデータの並びを揃えたら、
クエリの再発行も忘れずに!
解決方法(新)
結合テーブル=UNION(GROUPBY('テーブル1','テーブル1'[番号],'テーブル1'[名前],'テーブル1'[色]),GROUPBY('テーブル2','テーブル2'[番号],'テーブル2'[名前],'テーブル2'[色]))
UNIONで結合する際にGROUPBYで各テーブルのカラムを明示してあげると、対応関係を紐づけて結合することができます。
まとめ
今回の教訓としては、
結合する際にはGROUPBYでカラム名を明示する。
インポート前のデータを整形できるのであれば、なるべくきれいな並び順にしてから読み込ませよう
UNIONを使って同じく躓きをした人の一助になれば幸いです。