potisanのプログラミングメモ

プログラミング素人です。昔の自分を育ててくれたネット情報に少しでも貢献できるよう、情報を貯めていこうと思っています。Windows環境のC++やC#がメインです。

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』 
*/