目次
概要
本記事では、Table.PrefixColumns 関数を用いて列名にプレフィックス(接頭辞)を一括付与し、その後 Table.Join で別テーブルと結合する手順を解説いたします。列名の衝突を防ぎつつ可読性を高めるため、プレフィックスの活用は大変有効です。
前提条件
項目 | 内容 |
---|---|
Excel バージョン | Microsoft 365 または 2016 以降 |
サンプルテーブル | items_master (商品情報), invoice_list (伝票情報) |
追加アドイン | 不要(Power Query 標準機能のみ) |
サンプルコード(M 言語)
以下のコードを Power Query エディタの 「詳細エディター」 に貼り付けて実行してください。テーブル名、列名、プレフィックスは例示用に変更してありますので、安心してご利用いただけます。
let
// ブック内テーブル一覧を取得
wbData = Excel.CurrentWorkbook(),
// 商品マスタと伝票テーブルを取得
itemsTbl = wbData{[Name = "items_master"]}[Content],
invoiceTbl = wbData{[Name = "invoice_list"]}[Content],
// 商品テーブルの列名に "itm." を付与
itemsPrefixed = Table.PrefixColumns(itemsTbl, "itm"),
// 伝票テーブルと商品テーブルを ItemID で結合
mergedTbl = Table.Join(
invoiceTbl, // 左テーブル
"ItemID", // 左キー
itemsPrefixed, // 右テーブル(プレフィックス済み)
"itm.ItemID", // 右キー
JoinKind.LeftOuter // 必要に応じて結合方法を変更
),
// 必要な列のみ選択
finalTbl = Table.SelectColumns(
mergedTbl,
{"InvoiceID", "itm.ItemName", "itm.UnitPrice", "Quantity"}
)
in
finalTbl
コードのポイント
行 | 解説 |
---|---|
5–6 | Excel.CurrentWorkbook() でワークブック内テーブルを取得し、[Content] でデータを参照いたします。 |
9 | Table.PrefixColumns を用い、すべての列名に "itm" というプレフィックスを付与しております(例:ItemName → itm.ItemName )。 |
12–15 | Table.Join により伝票テーブルと商品テーブルを ItemID で結合します。プレフィックス付与後の列は itm.ItemID として指定いたします。 |
18–20 | Table.SelectColumns で必要な列だけを抽出し、最終テーブルを整形しております。 |
活用例
- 列名衝突の回避
異なるテーブルを結合する際、同名の列が存在するとエラーや混乱の原因となります。プレフィックスを付与することで問題を回避できます。 - テーブル由来の明確化
付与したプレフィックスにより、列がどのテーブル由来か一目で判別でき、後続処理やメンテナンスが容易になります。 - 可読性の向上
クエリが長くなる場合でも、プレフィックスによる命名規則を導入することでスクリプト全体の可読性が高まります。
よくある質問
質問 | 回答 |
---|---|
プレフィックスを複数付与したい場合はどうすればよいですか。 | Table.PrefixColumns を複数回適用するか、Record.TransformFields と組み合わせて個別に設定できます。 |
列名の末尾にサフィックスを追加したい場合は。 | Table.TransformColumnNames を使用し、無名関数内で Text.Combine や Text.EndsWith などを活用して実装できます。 |
まとめ
Power Query で列名にプレフィックスを付与し、その後テーブルを結合することで、列名衝突の防止と可読性向上を同時に実現できます。まずは本サンプルコードを実行し、正しくプレフィックスが付与された状態で結合できるかをご確認ください。業務データの構成に合わせてプレフィックスや結合条件を調整すれば、さらに柔軟な前処理が可能となります。