見出し画像

より強力なデータ変換のために Power Query M リストを理解する

リスト型のデータは複数の値の一覧を一つの値として扱うデータ型です。学生のころ習ったベクトルと言えばわかりすいかもしれません。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 } ) //結果1
List.Last リスト内の最後の項目を返します。
= 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

著者

フォン
こんにちは!フォンと申します。
株式会社メディアフュージョンのPower BI関連製品の開発を担当しているベトナム出身のエンジニアです。
蓄積された経験をPower BIに興味のあるや利用者などに共有したいです。

いいなと思ったら応援しよう!