Power Query M 言語でeachキーワードの詳細と具体的な用法

PowerQuery

Power Query M 言語では、each キーワードを使用して無名関数(匿名関数)を定義することができり。無名関数は慣れてくると特定の操作を簡潔に記述するために便利なようだがなかなか慣れない。。自分自身がeachに慣れるために、each の基本的な使い方と具体例をまとめました。

each の基本構文

each の基本構文は以下の通り:

  • each の後に続く <expression> は、無名関数の本体
  • 無名関数内での引数は _ で表される。これは、関数が適用されるリストやテーブルの各要素を指すすことになる。

無名関数とは

無名関数(匿名関数)とは、名前を持たない関数のこと。通常の関数定義では関数に名前を付けるが、無名関数は名前を付けずに関数を定義する。このため、一時的な処理やコールバック関数として利用されることが多い。

無名関数のメリット

  • 簡潔さ: 名前を付ける必要がないため、コードが簡潔になる(ただし慣れが必要)
  • 一時的な使用: 一度しか使わない関数に名前を付ける手間を省ける。
  • スコープの制御: 無名関数はその場で定義されるため、グローバルスコープを汚染しない。

eachの具体例

以下each を使用したシンプルな例。この例では、リストの各要素に対して特定の操作を適用する。

例1: リストの各要素に 1 を加える

  • OriginalList は {1, 2, 3, 4, 5} 
  • List.Transform は、リストの各要素に対して無名関数 「each _ + 1」 を適用
  • 「_」 はリストの各要素を指し、「_ + 1」 は各要素に 1 を加える。
  • 結果として、IncrementedList は {2, 3, 4, 5, 6} となる。

例2: 文字列リストの各要素に接尾辞を追加する

  • OriginalList は {"apple", "banana", "cherry"} 
  • List.Transform は、リストの各要素に対して無名関数「 each _ & " fruit"」 を適用
  • 「_」はリストの各要素を指し、「_ & " fruit" 」は各要素に ” fruit” を追加
  • 結果として、ModifiedList は {"apple fruit", "banana fruit", "cherry fruit"} となる

each の詳細な解説

each は、Power Query M 言語で無名関数を簡潔に定義するためのシンタックスシュガー(糖衣構文)。無名関数は、特定の操作を簡単に記述するために使用される。例として、以下のように each を使わない場合の無名関数の定義と比較してみる。

例3: each を使わない場合

  • each を使わない場合、無名関数は 「(x) => x + 1」 のように定義される。
  • each _ + 1」 は、実際には 「(x) => x + 1 」と同じ意味を持つ

例4: each を使わない場合 関数を定義版

  • AddOne という関数を定義する方法もある。
  • こちらも「each _ + 1」 や 「(x) => x + 1 」と同じ意味を持つ

まとめ

each を使用することで、無名関数を簡潔に定義し、リストやテーブルの各要素に対して特定の操作を適用することができる。これらの例を参考にeach の使い方をマスターしたい。

参考文献

ときおり出てくる "each" キーワードと "_" (アンダースコア) とは - Qiita
Power BI Desktop や Excel のクエリ エディターでデータの変換や加工をしていると、"each" キーワードと "_"(アンダースコア)が 式に使用されている。さて、これは何か?…

コメント

タイトルとURLをコピーしました