https://zhuanlan.zhihu.com/p/130460772
今天分享一個PowerQuery的小技巧,導入到PowerBI中的數據,如果想要更改數據的列名,可以在PQ編輯器中直接雙擊列名,如果需要修改的列名比較多,還可以批量修改,利用這個M函數:Table.RenameColumns
其實雙擊更改列名也是利用這個函數,以下面這個數據為例,
雙擊標題把“日期”更改為“訂單日期”,在編輯欄就會看到這個M函數,
= Table.RenameColumns( 更改的類型, {{"日期", "訂單日期"}})
這就是界面操作更改列名功能背后的M代碼。
Table.RenameColumns第一個參數是表名(“更改的類型”是上一個步驟名),第二個參數是由原列名和新列名組成的一個列表。如果更改兩個列名,只需要第二個參數中增加一個子列表就行了。
= Table.RenameColumns( 更改的類型, {{"日期", "訂單日期"},{"名稱","商品名稱"}})
當需要更改的列名比較多時,就可以利用第二個參數生成一個列表來批量更改。
可以先制作一個列名表,輸入原列名和新列名並導入到PQ中,
現在想辦法把這個表變成一個list列表,並把這個列表作為 Table.RenameColumns的第二個參數就可以了。
第一步,轉置列名表
第二步,將列名表變為list列表
插入步驟,
= Table.ToColumns(轉置表)
這個查詢就變成了這個列表,
第三步,批量更改列名
在需要更改的查詢表中,插入步驟,編輯欄輸入,
= Table.RenameColumns( 更改的類型,列名)
就可以一次性更改完所有的列名了。
如果原列名的列表中,含有表中不存在的列名,則會報錯,為了避免出現這種情況,還可以使用第三個參數,MissingFiled.Ignore。
上面第三個步驟直接寫為:
= Table.RenameColumns( 更改的類型, 列名, MissingField.Ignore)
這樣當出現列名不匹配的情況時,會自動跳過,而不會報錯。