potisanのプログラミングメモ

趣味のプログラマーがプログラミング関係で気になったことや調べたことをいつでも忘れられるようにメモするブログです。はてなブログ無料版なので記事の上の方はたぶん広告です。記事中にも広告挿入されるみたいです。

Power Query M テーブルの列名を先頭・末尾からの個数・条件一致で抜き出す

Power Query Mでテーブルの列名を先頭・末尾から個数あるいは条件一致で抽出するコードです。

let
    // 列名用のダミーテーブル
    テーブル1 = #table(
        {"列1", "列2", "列3", "列4", "列5", "A", "B", "C"},
        {}
    ),
    // 列名はTable.ColumnNames関数でリストとして取り出せます。
    // リストの通常操作で列名の一部を取り出せます。
    列名の一部 = [
        列名 = Table.ColumnNames(テーブル1),
        先頭3 = List.FirstN(列名, 3),
        末尾3 = List.LastN(列名, 3),
        先頭3以外 = List.RemoveFirstN(列名, 3),
        末尾3以外 = List.RemoveLastN(列名, 3),
        #"先頭から『「列」はじまり』" = List.FirstN(列名, each Text.StartsWith(_, "列")),
        #"末尾から『長さ1』" = List.LastN(列名, each Text.Length(_) = 1),
        #"末尾から『「列」はじまり』" = List.LastN(列名, each Text.StartsWith(_, "列")),
        #"先頭から『長さ1』" = List.FirstN(列名, each Text.Length(_) = 1)
    ]
in
    // 読みやすさのために整形します。
    Table.TransformColumns(
        Record.ToTable(列名の一部),
        {"Value", Combiner.CombineTextByDelimiter(", ")}
    )
/*
Name    Value
列名  列1, 列2, 列3, 列4, 列5, A, B, C
列名先頭3   列1, 列2, 列3
列名末尾3   A, B, C
列名先頭3以外 列4, 列5, A, B, C
列名末尾3以外 列1, 列2, 列3, 列4, 列5
列名先頭から『「列」はじまり』   列1, 列2, 列3, 列4, 列5
列名末尾から『長さ1』 A, B, C
列名末尾から『「列」はじまり』   
列名先頭から『長さ1』 
*/