Power QueryでCSVを読み込み、条件で抽出するMコード

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.SelectColumnsTable.TransformColumnTypes の列名は、ヘッダーの綴りと完全一致させる必要があります。表記ゆれがあるとエラーになります。
  • 日付や金額の型
    並べ替えや集計を行う場合、type datetype 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.ContentsCsv.Document でCSVを読み込み、ヘッダー昇格と型指定を行います。
  • Table.SelectRows で条件抽出し、必要な行のみを取り出します。
  • 文字コードは Encoding の指定で制御し、用途に応じてUTF-8やShift-JISを選択します。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次