https://zhuanlan.zhihu.com/p/64148928
前面我們學習PQ的時候都是用鼠標操作,雖然通過這些操作能完成大部分的數據處理,但是畢竟還有些復雜的工作是處理不了的,如果想徹底駕馭PQ,必須得掌握點高級玩法。就像學習Excel一樣,做個表格我們只要會簡單的操作就可以了,但要想學好Excel,必須會點公式、VBA是一樣的道理,PQ的高級技能也是需要寫公式函數的,在PQ中用的函數稱之為M函數。
在之前的PQ操作中,其實M函數無處不在,比如做數據清洗的每一個步驟,背后都有M函數的影子。打開高級編輯器,可以看到所有這些步驟的M語言。
如果我們不進行鼠標操作,直接在編輯器中編寫這些語言,也是可以得到最終的結果的,有了M函數,PQ的數據處理具有很強的可讀性和可移植性。
01 | 為什么要學習M函數
- 有些復雜的操作必須借助M函數
- M函數更加靈活,簡潔高效
02 | M函數基本規范
- M函數對大小寫敏感,每一個字母必須按函數規范書寫,第一個字母都是大寫
- 表被稱為Table,每行的內容是一個Record,每列的內容是一個List
- 行標用大括號{ },比如取第一行的內容:=表{0} //PQ的第一行從0開始
- 列標用中括號[ ],比如取自定義列的內容:=表[自定義]
- 取第一行自定義列的內容:=表{0}[自定義]
03 | 常用的M函數
- 聚合函數:
求和:List.Sum()
求最小值:List.Min()
求最大值:List.Max()
求平均值:List.Average()
- 文本函數:
求文本長度:Text.Length()
去文本空格:Text.Trim()
取前n個字符:Text.Start(文本,n)
取后n個字符:Text.End(文本,n)
- 提取數據函數:
從Excel表中提取數據:Excel.Workbook()
從Csv/Txt中提取數據:Csv.Document()
- 條件函數:
if else then (相當於Excel中的IF)
04 | 從哪里查找M函數
新建一個空查詢,在公式標記欄中輸入=#shared,就把所有的M函數顯示出來了,點擊某個函數,最下方便出現該函數的注釋:
05 | 學習建議
雖然M函數很強大,但是不建議一頭扎進去學習她,畢竟對於一個之前沒有接觸過編程的人來說,學習成本還是挺高的,並且大部分函數並不常用。
我的建議是先能夠讀懂M語言,並把常用的函數,比如文本函數、字符串函數、日期函數等瀏覽一遍,知道大概都有什么函數,分別是哪些功能,然后在數據處理過程中碰到鼠標操作難以完成的問題,能想到有哪個M函數可以利用,直接查找和並根據注釋使用、或者會修改相應的M函數即可。
如果熟練使用鼠標操作功能,又能靈活運用M函數,你將在數據處理的路上一騎絕塵、所向披靡。在大數據已經進入日常工作和生活的今天,擁有Power Query這個利器, 我們就能用最少的時間來處理數據,留下更多的時間去分析數據,去發現數據背后的規律,這才是我們學習PQ、學習PowerBI的最終目標。