iT邦幫忙

2022 iThome 鐵人賽

DAY 5
0
AI & Data

Power BI 資料分析與技術運用系列 第 5

D-05.M語言的函數

  • 分享至 

  • xImage
  •  

如果你也和我一樣懶得去思考那堆有的沒的函數式,事實上,前面提及Power Query編輯器,本身的操作介面就可以把一連串的資料轉換做函數,但這邊還是至少要知曉M語言可以為我們做甚麼。

當你需要了解一個處理資料的語言時,需要弄清楚這個語言定義的資料型態,以正確有效的處理資料。M查詢的內容可以是定義特定函數,然後透過其他查詢呼叫,重複使用轉換資料整理的商業邏輯,進而結構化設計M查詢

特過M定義函數把其他結果當作參數輸入,重複利用轉換資料的定義,其格式如下:

let
變數 = (參數列表) =>搭配參數的運算式
in
變數

或是更進一步的階層運算示範地回呼叫函數,由於遞迴要呼叫自己,故在呼叫的函數名稱前面加上@符號,執行格式如下:

let
Factorial = (n) =>if  n <= 1 then 1 else n * @Factorial (n-1)   //遞迴呼叫
in
Factorial

以範例解釋上述定義與呼叫函数,add 是變數名稱,指向個函數定義。(x,y)是要傳入函數運算式的參數,而=>符號後方則函數要執行的運算。最後回傳不指定參數值2和3,代表傳回函數定義,而非計算結果。在「Power Query編輯器」輸入的M語法下:

let
add = (x,y) => x+y
in
add(2,3)

https://ithelp.ithome.com.tw/upload/images/20220906/20146115lAw6vi1ZgU.jpg

要注意的是在呼函數時,使用的是查詢的名稱,此為「查詢1」。可以再建立一個空白查詢,以某個查詢呼叫另一個當作函数的查詢,即前面的呼叫自己,這時該查詢將命名為「階層」。

以查詢運算結果產生的資料結構呼叫自訂函數

let
來源=Table.FromRecords ({[c1=1],[c1=2],[c1=3],[c1=4]}),
叫用自訂函數=Table.AddColumn(來源,“查詢1",each階層([c1]))
in
叫用自訂函數

「來源」變數從Table.FromRccords函數取回的表格而後透過Table.AddColumn 函數為表格新增一個資料行。然而是該函數的第三個參數需要输入的是另外一個,以計算新增資料行對應每筆應有的值,此處的each就是關鍵,來建立匿名函數

each階層([c1])

該匿名函數的内容就是呼叫先前建立的「階層」函數,並傳入每一筆紀錄。而「階層」函數只取每筆錄C1欄位當作參數計算結後回傳的值就是「查詢1」資料行在該筆紀錄的值。


上一篇
D-04.Power BI 的M語言框架概述
下一篇
D-06. Power BI基礎報表設計
系列文
Power BI 資料分析與技術運用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言