CSVファイルをPower Queryで読み込み、列の型を明示したうえで担当者名で絞り込む基本手順をご紹介いたします。変数名や列名、ファイル名は本記事用に変更しております。
目次
基本のMコード(UTF-8想定)
Power Query エディタの「詳細エディター」に、次のMコードを記述します。
let
// 1) ファイル読み込み(UTF-8 の CSV を想定)
SourceBinary = File.Contents("C:\Data\incoming\orders.csv"),
CsvTable = Csv.Document(
SourceBinary,
[Delimiter = ",", Encoding = 65001, QuoteStyle = QuoteStyle.Csv]
),
// 2) 先頭行をヘッダーへ昇格
PromoteHeaders = Table.PromoteHeaders(CsvTable, [PromoteAllScalars = true]),
// 3) 必要な列に限定(例)
KeptColumns = Table.SelectColumns(
PromoteHeaders,
{"Owner", "OrderDate", "Client", "Amount"}
),
// 4) 列の型を明示
Typed = Table.TransformColumnTypes(
KeptColumns,
{
{"Owner", type text},
{"OrderDate", type date},
{"Client", type text},
{"Amount", type number}
}
),
// 5) 条件抽出(担当者が "Mori" の行のみ)
Filtered = Table.SelectRows(Typed, each [Owner] = "Mori")
in
Filtered
文字コードについて
- UTF-8 の場合は
Encoding = 65001
を指定します。 - Shift-JIS のCSVであれば、
Encoding = 932
としてください。 - 文字化けが見られる場合は、エンコーディング値の見直しをご検討ください。
よくあるつまずきと対処
- 列名の不一致
Table.SelectColumns
とTable.TransformColumnTypes
の列名は、ヘッダーの綴りと完全一致させる必要があります。表記ゆれがあるとエラーになります。 - 日付や金額の型
並べ替えや集計を行う場合、type date
やtype number
を必ず設定します。文字列のままでは期待どおりに動作しないことがあります。 - ファイルパスの権限
File.Contents
はローカルパスにアクセスします。ネットワークドライブの場合はアクセス権限をご確認ください。
応用:担当者名をパラメータ化する例
フィルター値を変更しやすくするため、別クエリでパラメータを定義し、参照する方法が有効です。たとえば OwnerParam
というテキストクエリを作成し、下記のように書き換えます。
let
SourceBinary = File.Contents("C:\Data\incoming\orders.csv"),
CsvTable = Csv.Document(SourceBinary, [Delimiter = ",", Encoding = 65001, QuoteStyle = QuoteStyle.Csv]),
PromoteHeaders = Table.PromoteHeaders(CsvTable, [PromoteAllScalars = true]),
Typed = Table.TransformColumnTypes(PromoteHeaders, {{"Owner", type text}, {"OrderDate", type date}, {"Client", type text}, {"Amount", type number}}),
Filtered = Table.SelectRows(Typed, each [Owner] = OwnerParam)
in
Filtered
まとめ
File.Contents
とCsv.Document
でCSVを読み込み、ヘッダー昇格と型指定を行います。Table.SelectRows
で条件抽出し、必要な行のみを取り出します。- 文字コードは
Encoding
の指定で制御し、用途に応じてUTF-8やShift-JISを選択します。