你在PQ中僅能使用UI界面將簡單的轉換應用於多個列,在本文中,將介紹如何一次對多個列應用高級轉換。你也可以用它來使用自定義函數。最后,對於自定義M函數的老粉:你還將獲得一個新的“ TranformAllMyColumnsAtOnceHowILikeIt”函數。
問題-我太難了
查詢編輯器中的“轉換”選項卡對你選擇的列是很敏感的。因此如果你如示列般選擇多列, 一些數字轉換將顯示為灰色,從而無法訪問:
許多圖標將變灰
所以,如果乘法圖標變灰,如何對所選列乘以10?
解法-So Easy
只需檢查要轉換的列並選擇一個可訪問的虛設函數。理想情況下,它應包含與預期函數一樣多的參數,但這不是強制性的。在我們的例子中,我選擇了一個帶有2個參數的函數(用於數字和乘法器):舍入->舍入非常適合這里。
我在小數位數字段中輸入乘數(10)的數字;
數字區域
現在,你是否正在問自己在哪里填寫數字本身的引用? 然后在編輯欄中簽出自動生成的M代碼:
自動生成的公式
查詢編輯器已自動將引用設置為數字,並用下划線(_)表示。這表示自動創建的(唯一)函數參數,因此,它使用了語法“each”關鍵字。
如你所見,已經為表的每個字段創建了所有代碼。因此,我們現在唯一需要調整的是函數本身。我改動“each Number.Round(_, 10)” 到 “each _ * 10” 通過將其復制粘貼到每個列表達式中:
編輯公式
使用自定義功能
如何將“RemoveHtmlTags”功能應用於整個表, 參考如下:
1.從GitHub復制功能代碼
2.在查詢編輯器中創建一個空白查詢
3.在高級編輯器中編輯該查詢,並將所有現有代碼替換為復制的代碼
4.命名查詢“ fnRemoveHtmlTags”
5.現在,你應該檢查所有列並應用虛擬轉換
6.最后,將生成的代碼的功能部分替換為“ fnRemoveHtmlTags”,如下所示:
刪除HTML標簽
你是否想知道“each”都去了哪里? 實際上,對於僅帶有一個參數的函數來說,這是不必要的。
更高效率的函數
如果要將轉換應用於表的所有列, 以下功能將派上用場。只需填寫3個參數(表格,函數和類型),然后,最后可以使用可選的“ ColumnNames”參數 。如果只想將轉換限制到這些列,則可以在其中提供列名稱的列表。
必須如下使用參數:
1.參考表格本身
2.參考函數
3.要轉換的列類型(注意:你必須使用正確的類型(無引號)且非文字表達式)
4.可選參數: 你想要將轉換限制為某些列的列名列表
技術交流
1.Power BI免費下載:http://www.yeacer.com/
Microsoft Power BI Desktop中文最新版:下載地址
2.歡迎加入的Power BI技術群,目前正在學習階段,有興趣的朋友可以一起學習討論。
Power Data技術交流群:702966126 (驗證注明:博客園Power BI)
更多精彩內容請關注微信公眾號:悅策PowerBI
如果您覺得閱讀本文對您有幫助,請點一下“推薦”按鈕,您的“推薦”將是我最大的寫作動力!歡迎各位轉載,作者博客:https://www.cnblogs.com/yeacer/