#データをマージして展開するときや、フォルダからファイルを指定して展開する
今回はフォルダを指定して、その中の複数ファイルを取り込んで結合するシナリオを考えてみます。(マージしたテーブルを展開するときも同様に処理できる)
生成される式はこんな感じで、カラム名が自動的に指定されて展開されます。
↓自動で作成された式
= Table.ExpandTableColumn(削除された他の列, "展開用", {"カラム1", "カラム2", "カラム3", "カラム4"}, {"展開用.カラム1", "展開用.カラム2", "展開用.カラム3", "展開用.カラム4"})
#元データにカラムが増えたらどうなる?
元データにカラムが増えちゃうこともありますよね。
うん、カラム5は無視されますね。
#新しく増えたカラムもそのまま取り込みたい!
元の式を見ると、こんなふうになっているので(第四引数は任意なのでグレーで着色)
Table.ExpandTableColumnの説明はこちら↓
https://docs.microsoft.com/ja-jp/powerquery-m/table-expandtablecolumn
元のカラム名のまま展開してよいなら、第三引数に使用するための、テーブルに含まれるカラム名のリストが取得できれば何とかなりそうです。
##テーブル内のカラム名のリストってどうやって取得できるの?
= List.Transform(削除された他の列[展開用],each Table.ColumnNames(_))
ただ、今回は複数ファイルを結合しているため、ファイルごとにカラム名のリストがそれぞれできちゃうので、このまま突っ込むと怒られます。。。
なので、リストの中身同士の和集合(全部足して重複をなくした全カラムのリスト)をList.Unionで作成します。
= List.Union(List.Transform(削除された他の列[展開用],each Table.ColumnNames(_)))
うん、これで目的のカラム名の一覧になりそう。
##あとは、元の式を置き換えるだけ!
一回、いつも通り展開した式をPowerQueryさんに自動で作ってもらって、
ぶらっぼう!Book1にしかない、新規追加された カラム5まで取得できるようになりました。