Edited at

Power Query 関数の一覧を参照する

Power Queryでも関数を覚えておいた方がよいと思うのです。Power Query エディター で データを加工変換しようとするとき、GUI操作でもそこそこのことができますけどね。よく使う関数だけでも覚えておくのはとても大事。Excel を使うときワークシート関数を覚えておいた方がよいのと同じ。


Power Query の関数


関数名

テーブル(table) を処理する関数、リスト(list)を処理する関数とかろいろあるけれども、関数名には特徴があるのでまずは覚えやすいかなと。

たとえば、

テーブルを対象とする関数では、接頭辞 "Table" となっていてどのような処理がするかで関数名になっていている。Table.SelectRows は テーブルの行を選択(condition が true) / 除外(condition が false)する。

オンラインサービスなどのデータソースアクセスする特定のコネクタもだいたい同じ命名。


関数の一覧

関数の一覧でどんな関数あるのかなって探すのだけど何を使うか


MSDN

Power Query M function reference | Microsoft Docs

関数のカテゴリごとで別れているので、どれだっけなぁと探したり、似たような関数を比較してみたりして使うことは多い。翻訳は提供されないだろうけど、さほど難解な記述はないので何とかなるレベルなはず。ただ、更新や追加がどのような頻度になるか?はわからないけど、コンテンツの"更新日時"は見ておけばよいか。


Power Query エディター

関数など順次追加されていくし、翻訳されたコンテンツが必要であれば、Power Query エディターで準備してしまえばよい。

そもそも Power Query の関数には、関数についてのコンテンツは用意されていて、使い方によってはパラメーターの投入するなどできるのだけど、



これを一覧っぽく見れるようになっていればという感じのもの。


Power_Queryの関数

let

ExceptSection1 = Record.ToTable(
Record.Combine(
{
Record.RemoveFields(
#shared,
Record.FieldNames(#sections[Section1])
),
[
#"#table" = #table,
#"#date" = #date,
#"#time" = #time,
#"#datetime" = #datetime,
#"#datetimezone" = #datetimezone,
#"#duration" = #duration,
#"#binary" = #binary
]
}
)
),
SelectType =
Table.SelectRows(
ExceptSection1,
each
Type.Is(
Value.Type( [Value] ),
Function.Type // Type.Type にすれば 定義された Typeの一覧に
)
),
AddedDescription =
Table.AddColumn(
SelectType,
"Description",
each
Value.Metadata(
Value.Type([Value])
)[Documentation.Description]?,
type text),
SortedRows = Table.Sort(
AddedDescription,
{ "Name", Order.Ascending }
)
in
SortedRows

構文や例を参照することができる。テーブルにしているので関数名で検索したりとか。

構文について

パラメーター、戻り値の Type(データ型)についても少しだけ。

例:Text.Remove( text as nullable text, removeChars as any ) as nullable text

いきなり日本語訳はいまふたつなのだけど、このあたりは汲み取ってあげたとして、

引数 text(Text.Type / null許容) から removeChars の文字を削除した nullable text(Text.Type / null許容)を戻り値とする。で、removeChars が any(Any.Type)。複数のTypeを受け付けるので any。


Any.Typeのパラメータ

Text.Remove("aaaBCaaa", {"B", "C"} ) = "aaaaaa" // true  list で指定

Text.Remove("aaaBaaa", "B" ) = "aaaaaa" // true text(文字列リテラル)で指定


その他