1. 程式人生 > >5個適用於初學者的有用數據分析表達式(DAX)函數

5個適用於初學者的有用數據分析表達式(DAX)函數

src 總數 圖片 表達 scene 創建 之間 top n graph

技術分享圖片

數據分析表達式(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參考以獲取更多信息。

Make senses to you?

技術分享圖片

延伸閱讀:

揭秘“DAX切片器”神秘的面紗

如何巧妙制作“形狀地圖”

一勞永逸的網頁數據采集神技能,你get到了嗎?

Power BI Desktop中處理Top的兩種方法

Power BI數據存儲管理

Power BI動態Top N 切片器 偏方拿好

Power BI 必備技能 -動態 “指標切換”

Power BI 必備技能 ― "書簽"應用

解讀Power BI數據安全性

搶鮮 | Power BI綻放的黑科技離我們還有多遠?


長按下方二維碼關註“悅策Power BI”獲取更多微軟Power BI幹貨及培課程學習,同時也歡迎各位小夥伴們轉發分享喲~ ~

技術分享圖片技術分享圖片

5個適用於初學者的有用數據分析表達式(DAX)函數