より強力なデータ変換のために Power Query M リストを理解する
こんにちは!フォンと申します。
株式会社メディアフュージョンのPower BI関連製品の開発を担当しているベトナム出身のエンジニアです。
蓄積された経験をPower BIに興味のあるや利用者などに共有したいです。
リスト型のデータは複数の値の一覧を一つの値として扱うデータ型です。学生のころ習ったベクトルと言えばわかりすいかもしれません。Power Queryのデータ変換プロセスでよく使用されます。
Power Query でのクエリの作成に慣れると、データ モデルに読み込まれたクエリの最終結果はほとんどがテーブル形式であることに気づくでしょう。
リスト は、中間ステップのデータ処理で役割を果たすデータ型です。
さらに、Power Query が提供するデータ処理関数には、リスト値を返す関数やリスト データを入力パラメーターとして持つ関数が多数含まれているため、リストの作成方法と操作方法を理解することが非常に重要であり、データをより迅速かつ効果的に変換するのに役立ちます。
まずはリストの作り方を見てみましょう。
リストを作成する
リストを手動で作成するには、要素を中括弧 「{}」 で囲み、カンマで区切ります。基本的なデータ型から複雑なデータ型までの任意のデータ型にすることができます。 リストに名前を割り当てるには、「= 」演算子を使用します。
リスト項目へのアクセス
リスト内の各要素には、0 から始まり徐々に増加する数値に対応する特定の位置があります。 次の構文を使用してリスト内の要素にアクセスできます。
list_name{element_position}NumberList = {1, 2, 3}
NumberListFirst = NumberList{0} // 結果 1
注: リストの範囲外の位置にアクセスすると、エラーが返されます。
または、次の組み込み関数を使用して要素を取得することもできます。
List.First リスト内の最初の項目を返します。= List.First( { 1, 2, 3 } ) //
List.Last リスト内の最後の項目を返します。結果
1= List.Last( { 1, 2, 3 } ) //
結果
3
List.Select リストから、選択条件 に一致する値のリストを返します。= List.Select( { 0, 1, 2, 3, 4, 5, 6 }, each _ <= 3) //
結果
{0, 1, 2, 3}
値の削除
次の利用可能な関数のいくつかを使用して、リストから要素を削除する操作を実行できます。
List.RemoveNulls リスト 内で発生するすべての null 値を削除します。List.RemoveNulls( { 1, null, 2, null, 3, 4, 5 } ) //
結果 { 1, 2, 3, 4, 5 }
List.Distinct 重複が削除された、リスト内のすべての値を含むリストを返します。List.Distinct( { "a", "b", "b"
, "a"
} ) // 結果
{ "a", "b" }
値の追加
「& 」演算子を使用すると、2 つの文字列を 1 つに連結できます。または、List.Combine 関数 を使用しても同じ結果が得られます{1, 2, 3} & {4, 5, 6}
//
{1, 2, 3, 4, 5, 6}結果
List.Combine({{1, 2, 3}, {4, 5, 6}}) //
結果
{1, 2, 3, 4, 5, 6}
値の変換
List.Transform 変換関数 をリスト に適用することによって、値の新しいリストを返します。List.Transform( { 1, 2, 3 }, each _ + 1 ) //
結果
{ 2, 3, 4 }
値を置換する
List.ReplaceValue 値 のリスト内で値を検索し、出現した値をそれぞれ置換値 に置き換えます。List.ReplaceValue({"a", "B", "a", "a"}, "a", "A", Replacer.ReplaceText) //
結果
{"A", "B", "A", "A"}
値の並べ替え
List.Sort 指定された省略可能な条件に従って、データのリストを並べ替えます。List.Sort({5, 7, 3, 1}, Order.Ascending) //
結果
{1, 3, 5, 7}
以上が Power Query のリストを使った基本的な操作ですが、実際に利用できる関数の数は非常に豊富です。 データ変換の目的に応じて、適切な関数を選択します。
リスト関数の詳細については、次のリンクにある Microsoft の記事を参照してください。
https://learn.microsoft.com/ja-jp/powerquery-m/list-functions