联动的标题名(Power Query)

发布时间 2023-08-07 15:54:33作者: 熬肥妖

问题:在PQ的某些操作,如展开,需要引用标题名,但是标题名是固定的,如果数据源中的标题发生变化,如何让其联动变化?

解决:利用Table.ColumnNames函数提取标题名实现联动。

以合并查询为例,当前表(表2)与源表进行合并,合并后展开的列有“日期”“城市/地区”“名称”“类别”“销量”“单价”“销售额”7列,合并的M代码如下:

let
    源 = Excel.CurrentWorkbook(){[Name="表2"]}[Content],
    合并的查询 = Table.NestedJoin(源, {"城市"}, 源表, {"城市/地区"}, "源表", JoinKind.LeftOuter),
    展开 = Table.ExpandTableColumn(合并的查询, "源表", {"日期", "城市/地区", "名称", "类别", "销量", "单价", "销售额"})
in
    展开

操作步骤:

1、复制源表,重命名为“标题”,贴入以下M代码:

let
    源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
    提取标题名 = Table.ColumnNames(源)
in
    提取标题名

2、修改合并查询的M代码如下:

let
    源 = Excel.CurrentWorkbook(){[Name="表2"]}[Content],
    合并的查询 = Table.NestedJoin(源, {"城市"}, 源表, {"城市/地区"}, "源表", JoinKind.LeftOuter),
    展开 = Table.ExpandTableColumn(合并的查询, "源表", 标题)
in
    展开