power query在有表需要展開時,如何直接界面操作纯路,會按照列名一個一個展開,這種方式一旦原數(shù)據(jù)表中的列發(fā)生改變寞忿,則就會容易報錯驰唬,需要在手動進行修改,非常不方便。
那么有沒有能動態(tài)獲取想展開的列的辦法呢叫编?
答案當然是有辖佣,先來看下思路:
通過函數(shù)來獲取需要展開的表的所有列名,然后通過對列名進行判斷后獲取想要展開的列的list搓逾,展開時選擇該list即可卷谈。
下面分2個場景介紹
場景一:展開所有列
let
? ? 源 = ivr_data{[表名稱="10086熱線運營通報日報表"]}[表數(shù)據(jù)],
? ? 刪除表名稱列 = Table.RemoveColumns(源,{"表名稱"}),
? ? 列名=Table.ColumnNames(刪除表名稱列{0}[讀取數(shù)據(jù)]),
? ? #"展開的“讀取數(shù)據(jù)”" = Table.ExpandTableColumn(刪除表名稱列, "讀取數(shù)據(jù)", 列名, 列名)
in
? ? #"展開的“讀取數(shù)據(jù)”"
其中列名是新增的一個變量,用來獲取所有的列名的list霞篡,Table.ColumnNames()為獲取表列名的函數(shù)世蔗,刪除表名稱列{0}[讀取數(shù)據(jù)]表示刪除表名稱列這個表的第0行的讀取數(shù)據(jù)列
場景二:有選擇的展開列
根據(jù)場景一的方法,我們只用對列名按需要的條件篩選即可完成朗兵,此時直接使用List.Select()函數(shù)對列名的list進行選擇即可
這里舉個非null的例子污淋,其他的條件可自行揣摩
列名=List.Select(Table.ColumnNames(刪除表名稱列{0}[讀取數(shù)據(jù)]),each _<>null)
自此,我們再也不用擔心因為表列名的變化導(dǎo)致查詢報錯的問題余掖。