Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What is going on with this article?
@asahi_u

ファイル結合→展開時に全てのカラムを展開する(展開するカラムを個別に指定しないで展開)

データをマージして展開するときや、フォルダからファイルを指定して展開する

今回はフォルダを指定して、その中の複数ファイルを取り込んで結合するシナリオを考えてみます。(マージしたテーブルを展開するときも同様に処理できる)

Table と表示されているカラムを展開するときに
image.png
image.png

↑この画面で「(すべての列の選択)」を選んでも、
image.png

生成される式はこんな感じで、カラム名が自動的に指定されて展開されます。

 ↓自動で作成された式

= Table.ExpandTableColumn(削除された他の列, "展開用", {"カラム1", "カラム2", "カラム3", "カラム4"}, {"展開用.カラム1", "展開用.カラム2", "展開用.カラム3", "展開用.カラム4"})

元データにカラムが増えたらどうなる?

元データにカラムが増えちゃうこともありますよね。

image.png
↑「カラム5」が増えた

データを更新しても…
image.png

うん、カラム5は無視されますね。

新しく増えたカラムもそのまま取り込みたい!

元の式を見ると、こんなふうになっているので(第四引数は任意なのでグレーで着色)
 Table.ExpandTableColumnの説明はこちら↓
  https://docs.microsoft.com/ja-jp/powerquery-m/table-expandtablecolumn
image.png

元のカラム名のまま展開してよいなら、第三引数に使用するための、テーブルに含まれるカラム名のリストが取得できれば何とかなりそうです。

テーブル内のカラム名のリストってどうやって取得できるの?

それぞれのテーブルのカラムの中身はこれで取得できそう
image.png

= List.Transform(削除された他の列[展開用],each Table.ColumnNames(_))

ただ、今回は複数ファイルを結合しているため、ファイルごとにカラム名のリストがそれぞれできちゃうので、このまま突っ込むと怒られます。。。
なので、リストの中身同士の和集合(全部足して重複をなくした全カラムのリスト)をList.Unionで作成します。

image.png

= List.Union(List.Transform(削除された他の列[展開用],each Table.ColumnNames(_)))

うん、これで目的のカラム名の一覧になりそう。

あとは、元の式を置き換えるだけ!

一回、いつも通り展開した式をPowerQueryさんに自動で作ってもらって、
image.png

水色のところをさっきの式で置き換え&青いところを削除
image.png

ぶらっぼう!Book1にしかない、新規追加された カラム5まで取得できるようになりました。

2
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
asahi_u
社内で一人で通常業務の合間にBIでの可視化やExcelのマクロの作成などをしている一担当者。PC関連のお勉強は社会人になってから独学です。 最近、Office365でRPA(PowerAutomate)に出会い、興味はあるもののまだ試作品生成が精いっぱい。 そのうち、Automateの記事も書けるようになりたい!

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
2
Help us understand the problem. What is going on with this article?