Power Queryで「最新5件のみ」を読み込むMコードと注意点

WebやExcel内のテーブルが肥大化すると、分析前に最新数件だけに絞りたい場合がございます。ここでは、Power Query エディタの「詳細エディター」に記述する M 言語 の例を示し、日付で降順ソートして先頭5行のみ を取得する方法をご説明いたします。変数名やテーブル名は独自のものに変更しております。

目次

基本コード例(最新5件)

以下を「詳細エディター」に貼り付けてご利用ください。
列名やテーブル名は、ご利用シートに合わせて置き換えてください。

let
    // Excel内のテーブル名を指定
    Source = Excel.CurrentWorkbook(){[Name = "Orders"]}[Content],

    // 列の型を明示(Date列が文字列のままだと正しく並びません)
    Typed = Table.TransformColumnTypes(
        Source,
        {
            {"Owner", type text},
            {"Date", type date},
            {"Customer", type text},
            {"Subtotal", type number}
        }
    ),

    // 必要な列だけに限定
    KeptColumns = Table.SelectColumns(Typed, {"Owner", "Date", "Customer", "Subtotal"}),

    // 日付の降順で並べ替え
    Sorted = Table.Sort(KeptColumns, {{"Date", Order.Descending}}),

    // 先頭5行のみ取得(最新5件)
    Top5 = Table.FirstN(Sorted, 5)
in
    Top5

置き換えの目安

  • Orders は、Excel のテーブル名に合わせて変更してください。
  • 列名 Owner, Date, Customer, Subtotal は、実データの見出しに合わせて変更してください。
  • 取得件数を変えたい場合は、Table.FirstN(Sorted, 5) の数値を変更してください。

代替記法

Table.FirstN の代わりに、次のいずれかでも同等です。お好みで選択してください。

  • Table.Range(Sorted, 0, 5)
  • 昇順に並べてから Table.LastN(AscendingSorted, 5)

よくあるつまずきと対処

  1. 日付が正しく並ばない
    文字列のままでは並び替えが期待どおりにならない場合がございます。Table.TransformColumnTypestype date へ明示的に変換してください。時刻を含む場合は type datetime をご検討ください。
  2. 列名のタイプミス
    見出しの全角・半角や余分な引用符により、列取得でエラーになることがございます。Table.SelectColumns の列名は正確に記述してください。
  3. テーブル名の誤り
    Excel.CurrentWorkbook() に渡す Name はシート名ではなく、Excel のテーブル名です。必要に応じて対象範囲をテーブル化したうえで名称をご確認ください。

応用:件数をパラメータ化する

最新件数を都度変えたい場合は、変数に切り出しておくと便利です。

let
    Source = Excel.CurrentWorkbook(){[Name = "Orders"]}[Content],
    Typed = Table.TransformColumnTypes(
        Source,
        {{"Owner", type text}, {"Date", type date}, {"Customer", type text}, {"Subtotal", type number}}
    ),
    Sorted = Table.Sort(Typed, {{"Date", Order.Descending}}),
    TopN = 5,
    Output = Table.FirstN(Sorted, TopN)
in
    Output

まとめ

  • 日付列を必ず日付型または日時型へ変換し、降順ソート後に上位N件を取得すると安定いたします。
  • 列の選択、型指定、並べ替え、件数の切り出しを定型化することで、再利用性が高まり運用が容易になります。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

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

目次