テーブル型、Power Query Mにおいて多用するデータ型、重要です。
こんにちは!フォンと申します。
株式会社メディアフュージョンのPower BI関連製品の開発を担当しているベトナム出身のエンジニアです。
蓄積された経験をPower BIに興味のあるや利用者などに共有したいです。
Power Query でのほとんどのデータ変換はテーブルに基づいているため、テーブルの作成方法を理解しておくと、後で多くのデータ変換の課題を解決するのに役立ちます。
この記事では、Power Query を使用するときに私が使用した一般的なテーブル作成方法を説明します。
1. Power Queryに読み込まれたデータソースからテーブルを作成する
ソースからPower Query にデータを読み込むとき、データ ソースに応じて、データはリスト、レコード、テーブルなどの形式になる場合があります。次のステップでは、それらを目的のテーブルに変換します。以下は、リストまたはレコードからテーブルを作成する例です。
a) Table.FromList 関数を使用してリストからテーブルを作成する
構文
Table.FromList(list as list, optional splitter as nullable function, optional columns as any, optional default as any, optional extraValues as nullable number) as table
例: 値を含むリストを使用して単一列のテーブルを作成する
let
AlphabetList = {"a", "b", "c", "e"},
// Column1 という名前のテーブルを作成します。
#"Converted to Table" = Table.FromList(AlphabetList)
in
#"Converted to Table"
注: 上記の例は、データ型がテキストの要素を含むリストを変換する場合の最も単純なケースであり、Table.FromList 関数は必要なパラメーターのみを渡します。
実際、リスト構造は非常に多様であり、Table.FromList 関数のオプションのパラメーターと組み合わせることで、目的に合わせてさまざまなタイプのテーブルに変換できます。
b) Table.FromRecords 関数を使用してテーブルを作成する
レコードのリスト をテーブルに変換します。
構文
Table.FromRecords(records as list, optional columns as any, optional missingField as nullable number) as table
例:レコード フィールド名を列名として使用して、レコードのリストからテーブルが作成されます。
let
//WebAPIからデータを読み込み
Source = Json.Document(Web.Contents("https://dummyjson.com/posts")),
//postsレコードのリストを参照
posts1 = Source[posts],
//レコードのリストからテーブルを作成します
#"Converted to Table" = Table.FromRecords(posts1)
in
#"Converted to Table"
結果
2. データソースを使用せずに #table() でテーブルを作成する
構文
#table(columns as any, rows as any) as any
実際、私もよく利用しています。たとえば、API からデータを取得するときにエラー コードとエラー メッセージに関する情報を含むテーブルを作成して、エラーケースを処理します。
HTTP_Errors = #table(
type table
[ #"ErrorCode" = number,
#"ErrorMsg" = text
],
{
{400, "エラー(400): 不正な要求"},
{401, "エラー(401): 未認可"},
{403, "エラー(403): 禁止"},
{404, "エラー(404): 見つからない"},
{429, "エラー(429): リクエストが多すぎます"},
{500, "エラー(500): 内部サーバーエラー"},
{503, "エラー(503): サービス利用不能"},
}
)
この記事では、テーブルの作成方法の基本的な例をいくつか紹介するだけです。より多様な変換をより深く理解して実行するには、以下にリンクされている記事を参照してください。
https://gorilla.bi/power-query/creating-tables/
https://learn.microsoft.com/ja-jp/powerquery-m/table-fromlist
https://learn.microsoft.com/ja-jp/powerquery-m/table-fromrecords
https://learn.microsoft.com/ja-jp/powerquery-m/sharptable