power query展开表时动态获取要展开的列
2018-12-04 本文已影响17人
深海农夫
power query在有表需要展开时,如何直接界面操作,会按照列名一个一个展开,这种方式一旦原数据表中的列发生改变,则就会容易报错,需要在手动进行修改,非常不方便。
那么有没有能动态获取想展开的列的办法呢?
答案当然是有,先来看下思路:
通过函数来获取需要展开的表的所有列名,然后通过对列名进行判断后获取想要展开的列的list,展开时选择该list即可。
下面分2个场景介绍
场景一:展开所有列
let
源 = ivr_data{[表名称="10086热线运营通报日报表"]}[表数据],
删除表名称列 = Table.RemoveColumns(源,{"表名称"}),
列名=Table.ColumnNames(删除表名称列{0}[读取数据]),
#"展开的“读取数据”" = Table.ExpandTableColumn(删除表名称列, "读取数据", 列名, 列名)
in
#"展开的“读取数据”"
其中列名是新增的一个变量,用来获取所有的列名的list,Table.ColumnNames()为获取表列名的函数,删除表名称列{0}[读取数据]表示删除表名称列这个表的第0行的读取数据列
场景二:有选择的展开列
根据场景一的方法,我们只用对列名按需要的条件筛选即可完成,此时直接使用List.Select()函数对列名的list进行选择即可
这里举个非null的例子,其他的条件可自行揣摩
列名=List.Select(Table.ColumnNames(删除表名称列{0}[读取数据]),each _<>null)
自此,我们再也不用担心因为表列名的变化导致查询报错的问题。