问题:在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
展开