DAX是英文Data Analysis Expression的縮寫,意思是數據分析表達式,從名稱上就可以看出,DAX公式是用作數據分析的,事實上也確實如此,從數據分析層面認識DAX會更有助於我們理解它.
https://zhuanlan.zhihu.com/p/64272859
01 | 認識DAX
數據分析就是從茫茫數據中提取有用的信息,執行一定的運算,形成結論的過程,而DAX的主要功能正是查詢和運算,DAX查詢函數負責篩選出有用的數據集合,然后利用DAX的聚合函數執行計算。
從前面的文章我們知道,度量值的運算依賴上下文,上下文又分為外部上下文和內部上下文,外部上下文就是外部可以看得見的篩選:標簽和切片器,而內部上下文就是創建度量值的DAX公式,它的查詢篩選函數可以擴大、限制或者重置外部上下文。利用外部上下文和DAX的有效配合,度量值的靈活性大大增強,可以篩選出真正需要的數據集合並執行聚合運算。如果說度量值是Power BI數據建模的靈魂,那么DAX就是度量值的靈魂。
02 | DAX的使用范圍
DAX可以在Power BI Desktop 的數據建模和Power Pivot中使用,除了可以創建度量值,還可以新建列,比如想把這個日期表上的月用兩位數字表示,即7月用07表示,新建列然后編輯欄輸入:
月份 = format('日期表'[日期],"MM")
然后就增加了一列[月份],

不過除非特別有必要,不建議用新建列的方式做數據豐富,這樣更占用內存,如果想增加一列,可以在源數據上,回到查詢編輯器里面增加一列然后上載到數據模型中使用。
03 | DAX參數的基本格式
- 表名用單引號' '括着 // '日期表'
- 字段用中括號[ ]括着 //[日期]
- 度量值也是用中括號[ ]
- 引用字段始終要包含表名,以和度量值區分開
04 | DAX常用函數
聚合函數
- SUM
- AVERAGE
- MIN
- MAX
這幾個函數的使用和在Excel中完全一致,DAX中還有一類特有的函數非常有用,和這幾個函數很像,后面加個X,
- SUMX
- AVERAGEX
- MINX
- MAXX
- RANKX
這幾個函數可以循環訪問表的每一行,並執行計算,所以也被稱為迭代函數。
其他常見的聚合函數:
- COUNT:計數
- COUNTROWS:計算行數
- DISTINCTCOUNT:計算不重復值的個數
時間智能函數
- PREVIOUSYEAR/Q/M/D:上一年/季/月/日
- NEXTYEAR/Q/M/D:下一年/季/月/日
- TOTALYTD/QTD/MTD:年/季/月初至今
- SAMEPERIODLASTYEAR:上年同期
- PARALLELPERIOD:上一期
- DATESINPERIOD:指定期間的日期
關於時間智能函數,會專門寫篇文章介紹,利用它可以靈活的篩選出一段我們需要的時間區間,做同比、環比、滾動預測、移動平均等數據分析時,都會用到這類函數。
篩選函數
- FILTER:篩選
- ALL:所有值,可以清除篩選
- ALLEXCEPT:保留指定列
- VALUES:返回不重復值
這幾個函數,就是典型的DAX查詢函數,通過篩選來操縱上下文的范圍。
最后放出DAX最重要也是最常用的函數:CALCULATE,這個函數簡直就是DAX本身,學好這個函數就基本上掌握了DAX,它值得專門寫篇文章好好介紹。
