Power Query M: Table.TransformColumnsでテーブル型データ等を含む構造化列を変換
こんにちは!フォンと申します。
株式会社メディアフュージョンのPower BI関連製品の開発を担当しているベトナム出身のエンジニアです。
蓄積された経験をPower BIに興味のあるや利用者などに共有したいです。
データ ソースから Power BI にデータを読み込むとき、何らかの理由で、データ ソースを読み込んだ後、列にテーブル型、レコード型、リスト型データが含まれることが発生する可能性があります。
テーブル型、レコード型、リスト型データは構造化列と呼ばれ、これらを分解しないと次の処理を進めることが出来ないケースが多いです。
今回の記事ではTable.TransformColumns関数を使用する方法を紹介します。
以下は例として作成したサンプルです。
List Product.product列に商品数が複数の場合はリスト形式で作成されますが、商品が1つの場合はテキスト形式となります。
次にリストデータをテキスト型に変換する処理をしていきます。
let
//(データ読み込みコードを短縮する)
#"Transform List Product.product " = Table.TransformColumns(#"Your Table Name", {"List Product.product", each
if Value.Is(_, type list) then
Text.Combine(_,",")
else
_})
in
#"Transform List Product.product "
結果
ソースコード説明
・Table.TransformColumns関数を使用して、テーブルの「List Product.product」にロジックを適用します
・「each」 キーワードと 「_ 」 (アンダースコア) とは行それぞれに処理を行います。
・Value.Is(_, type list) を使用して、現在の値がリスト型であるかどうかを確認します。
True の場合: Text.Combine(_, ","): を使用してリストをテキスト リストに変換しようとします。
Falseの場合: 元の値 (_) が保持されます。
参照
Table.TransformColumns使い方は https://learn.microsoft.com/ja-jp/powerquery-m/table-transformcolumns
「each」 キーワードと 「_ 」 (アンダースコア) とは https://qiita.com/PowerBIxyz/items/6668537a576592a04bcf