shikumika’s diary

日々の事務作業で手間なことを簡単にできる仕組み(自動化、方法など)、困ったことの解決方法を調べた備忘録

【Power Query】識別子 _ (アンダースコア) の理解

Power Queryで自動作成される式で、識別子 _ (アンダースコア、もしくはアンダーバーという)が使用されていることがあります。このアンダースコアは何を表すのか、役割を理解する備忘録です。

内容:

初心者がアンダースコアの中身を確認する方法

PowerQueryを始めた段階で、アンダースコアが何なのかを理解する良い方法は、カスタム列に次の式を入れることです。

=_


参考になった記事:
【パワークエリ】M言語に慣れる_8回目~eachを使いこなしてM関数作成~ | Excellent仕事術

例えば、下図のような2列の元データで説明します。

2つのフィールド、4行のデータがあります

簡単なクエリの例(元データ)

このケースで、「列の追加」タブー「カスタム列」をクリックし、式を「=_」とだけ入力します。

「=_」と入力する

カスタム列の式に、アンダースコアを入力

上記で「OK」とした結果が下図で、式はアンダースコアを含むシンプルなものです。

= Table.AddColumn(変更された型, "カスタム", each _)

これにより、表には「Record」というデータが各行に追加されます。

その中身は「Record」を選択すると画面下側に表示され、元のステップにあった各行の値であることがわかります。

なお、この事例は「列の追加」をしただけなので、表の左側にある「コード」「分類」と同じです。

元のステップの各行の値が格納されている

カスタム列の式に、アンダースコアを入力した結果

アンダースコアの説明

Microsoftの説明では以下のとおりです。

each-expression は、_ (アンダースコア) という名前の 1 つのパラメーターを受け取る型指定されていない関数を宣言するための構文の省略形です。

M 言語関数 - PowerQuery M | Microsoft Learn

また、以下のような説明もあります。

形式 [y] と [y]? は、識別子 _ (アンダースコア) への "短縮形" 参照としてサポートされています。

M 言語の演算子 - PowerQuery M | Microsoft Learn

つまり、

[A]           ・・・フィールドのみ      
_[A]     ・・・アンダースコアとフィールドの組み合わせ

は同じこととあります。

前述の事例(2列の元データ)で、以下具体的に示します。

アンダースコアとフィールドを組み合わせた場合

前述の事例では、カスタム列の式を「=_」としていました。

アンダースコアに加えてフィールドも追加して式を

=_[分類]

とした結果は以下です。[分類]フィールドの値が参照できています。

=_[分類]とした場合

アンダースコアとフィールドを組み合わせた場合

フィールドのみを指定の場合

カスタム列の式を、フィールドのみで、

=[分類]

とした結果は以下です。これは、よく使うケースだと思うので、そのままの結果です。

=[分類] の式を入力

フィールドのみを指定の場合

アンダースコアとフィールドを組み合わせた場合と同じ結果です。

以上、Power Queryで、識別子 _ (アンダースコア) の説明でした。