Power Query M式言語の構造データ型の1つであるレコードについて解説する記事です。
環境
Windows10
Excel 2019
レコードとは?
データ構造の一つで、名前(キー)と値のペアで保持されるデータで、名前(キー)を指定することで値を取得することができるデータ構造のことです。
世にいうハッシュテーブルというやつです。
M式言語では[]で囲み、次のように書きます。
[名前1=値1,名前2=値2,名前3=値3]
レコードの例
レコードの例を見てみましょう。
単純なレコード
一番単純なレコードの例です。
let kenRecord=[id=1,name="ken"] in kenRecord
名前(キー)を使ったアクセス
レコードで名前(キー)を使って値を取得するには[]を使います。
let kenRecord=[id=1,name="ken"] in kenRecord[name]
名前(キー)に空白がある場合
名前(キー)に空白がある場合は、#"〇〇 〇〇"と書きます。
let kenRecord=[id=1,name="ken",#"birth day"=Date.FromText("2000/1/2")] in kenRecord
レコードに関する関数
Record関数を使うことで、レコードを便利に使うことができます。
新しいフィールドを追加する
レコードに新しいフィールド(名前と値のペア)を追加するときはRecord.AddField関数を使います。
let kenRecord=[id=1,name="ken"] in Record.AddField(kenRecord,"age",23)
レコードの名前(キー)一覧を取得する
レコードの名前(キー)一覧を取得するときはRecord.FieldNames関数を使います。
let kenRecord=[id=1,name="ken"] in Record.FieldNames(kenRecord)
特定の名前(キー)が含まれているか調べる
レコードに特定の名前(キー)が含まれているか調べたいときは、Record.HasFields関数を使います。
let kenRecord=[id=1,name="ken"] in Record.HasFields(kenRecord,"id")
他にも様々なRecord関数があります。詳しくはレコード関数 - PowerQuery M | Microsoft Docs に一覧が載っていますので、眺めてみると面白い発見があること請け合いです。
終わりに
Power Query M式言語のレコードについて解説してみました。
レコードは[]で囲まれているところがキモです。対してリストは{}で囲まれています。この2つの違いをきっちり理解しておくと、自動的に生成されるM式を見てもなんとなく理解できる・・・はず・・・です。リストと同様、カッコの意味をひとつずつ整理していけば、理解されることと思います。
というわけで、ここまでお読みいただき、ありがとうございました。