資料分析表達式(DAX)入門可能令人生畏,但是,當你了解一些基本功能後,你就可以幫助你解答許多有關資料的新見解。雖然在Power BI或Pivot Charts中建立視覺效果很容易,但我們經常希望檢視特定時間範圍的資料,或者應用或删除特定過濾器的資料,而這些資料是我們無法使用原始資料完成的。
如果你遇到過這個問題,那麼掌握DAX的一些基本知識可以讓你在模型中建立資料視圖更便捷。作為Power BI和DAX的相對新手,我建議先學會這5個基本的DAX函數。
報告視圖
關系視圖
1. FILTER
FILTER函數用于傳回表或表達式的子集,如下所示。
FILTER(<table>,<filter>)
假設你想獲得大于100美元的商品。我們可以使用COUNTROWS函數來計算指定表中的行數,以及FILTER函數來完成此過濾:
統計訂單銷售大于100 = COUNTROWS(FILTER(\'Sales\', \'Sales\' [Sales] > 100))
第一個參數\'Sales\'辨別一個表或一個表格。第二個參數\'Sales\'[Sales]> 100,表示為表的每一行計算的布爾值或true / false表達式。在此表達式中,我們将Sales表傳遞給FILTER函數,并要求它傳回任何大于100美元的商品。FILTER函數從不用作獨立函數,但與其他函數一起使用。在上面的示例中,我們使用FILTER函數傳回子集,然後計算結果。
2. ALL
ALL函數用于傳回表中的所有行或列中的值,忽略可能已應用的任何過濾器。
ALL(<table>或<column>)
在上面的報告視圖中,我們的報告包含多個卡片和一個不包含德國銷售額的頁面級過濾器。我們希望保留此過濾器,但添加一個可視化的卡片,顯示已售出的商品總數,忽略放置在報告其餘部分的任何過濾器。以下包含ALL函數的表達式可以幫助你實作此目的:
統計訂單數 = COUNTROWS(ALL(\'Sales\'))
在這個例子中,我們将\'Sales\'表傳遞給ALL函數,要求它清除可能放在它上面的任何過濾器。與FILTER函數一樣,ALL函數不是獨立使用,而是與其他函數一起使用。在這種情況下,我們将ALL函數與COUNTROWS函數結合使用,以擷取所有銷售記錄的計數。ALL函數接受表或列,并清除可能已放置在它們上的任何過濾器。
3. RELATED
RELATED函數從另一個表傳回一個相關值(如下所示)。
RELATED(<column>)
到目前為止,我們已經使用了可以幫助你傳回子集或清除表或列上的任何過濾器的函數。我們現在想要僅針對美國過濾我們的銷售,但是在一個表中沒有我們需要的所有資料來完成此操作。幸運的是,我們有RELATED函數,我們可以通過已建立的關系将值從一個表檢索到另一個表。鑒于Sales表和SalesGeography表之間存在多對一關系,我們可以使用包含RELATED函數的以下表達式來傳回僅美國的銷售訂單計數:
統計美國的訂單 = COUNTROWS(FILTER(ALL(\'Sales\'), RELATED(\'SalesGeography\'[Countries]) = "美國"))
4. TOTALYTD / TOTALQTD / TOTALMTD
DAX中的時間智能功能使你能夠使用時間段(包括天,月,季度和年)來操縱資料,然後建構和比較這些時段的計算。
TOTALYTD(<expression>,<dates>[,<filter>][,<year_end_date>])
繼續上面的例子,假設你希望看到今年迄今為止的總銷售額。以下包含TOTALYTD函數的表達式可以讓你輕松執行此操作:
今年的銷售訂單 = TOTALYTD(SUM(\'Sales\'[Sales]), \'Dates\'[Dates])
第一個參數\'Sales\'[Sales]辨別要聚合的列。這也可以是傳回标量或奇異值的表達式。第二個參數“日期”[日期]是包含日期的列。時間智能功能是非常有用的功能,消除了在常用時間段内計算聚合的複雜代碼的需要。
5. CALCULATE
CALCULATE函數計算由特定過濾器修改的上下文中的表達式。
CALCULATE(<expression>,<filter1>,<filter2> ...)
假設你現在有興趣列出所有區域的所有銷售情況。雖然你可以建立一些零碎的表達式來實作這一點,但你可以使用CALCULATE函數輕松而幹淨地完成相同的操作。以下示例使用CALCULATE函數,可以完成此任務:
所有國家除以地區的銷售總額 = CALCULATE(SUM(\'Sales\'[Sales]),ALL(\'SalesGeography\'))
第一個參數SUM(\'Sales\'[Sales])辨別要聚合的列。第二個參數ALL(\'SalesGeography\'),用于删除可能已放置在SalesGeography表上的所有過濾器。請注意,這會忽略排除德國銷售的頁面級過濾器。CALCULATE函數是DAX中功能最強大,最有用的函數之一。将CALCULATE函數視為增壓“IF”語句是有幫助的。一些規則适用于CALCULATE函數:過濾器參數不能引用度量,并且表達式不能使用任何掃描或傳回表的函數。CALCULATE函數通常與聚合函數一起使用,盡管過濾器參數是可選的,但通常至少使用一個。
在DAX中建立一些非常複雜的查詢經常出現的,但隻是精通幾個函數可以幫助你了解許多有趣的資料洞察。我建議檢視Microsoft的DAX參考以擷取更多資訊。
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/