如何使用 DAX 函式解決動態圖表標題

weixin_34185364發表於2019-02-25

您可能知道,Power BI 中的圖表(以及許多其他視覺化)具有可以設定為任何靜態文字的標題。您可以通過選擇圖表,轉到 “視覺化物件” 窗格中的 “格式” 選項卡,然後更改 “標題” 部分中的屬性(如下所示)來完成此操作:

13807623-3e52fde8accfb6be.png
image

但是,如果您希望圖表標題根據所選內容而改變呢?例如,您可能正在使用切片器或過濾器來允許使用者選擇他們想要檢視資料的月份。在這種情況下,您可能想要新增一個標題,顯示實際上已選擇了哪一月;如果報告使用過濾器,或者要列印報告,這將特別重要。遺憾的是,內建的 Title Text 屬性不能用於顯示動態值,但在本文章中,小悅將向您展示如何使用 DAX 解決此問題。

以下是包含動態圖表標題的報告的簡單示例:

13807623-a7816fde6551c759.gif
image

小悅建立了一個簡單的測試資料集,其中只有兩個欄位一個月份,一個數量,該報告包含一個柱形圖,其中顯示按月份顯示的數量。還有一個切片器,使用者可以選擇一個月或多個月,在頂部有一個標題,列出在切片機中選擇並顯示在圖表中的日期名稱。

解決方案分為兩部分

第一部分是建立一個度量****。它將返回圖表標題所需的文字,這依賴於 DAX 函式 ConcatenateX()。這是衡量標準的 DAX:

Title = "你選中了"

& CONCATENATEX(

VALUES (Sheet1 [月]),

Sheet1 [月],

", "

)

這裡,Values()函式用於返回包含所有選定月份的表,然後將其傳遞給 ConcatenateX()以獲取包含逗號分隔的日期名稱列表的文字值。

第二部分涉及如何顯示度量返回的****值****。在上面的報告中,小悅使用了卡片視覺化,將上面的度量放入 “欄位” 區域,然後關閉 “格式” 選項卡上的 “類別標籤”,以便僅顯示度量返回的值,而不顯示度量本身的名稱:

13807623-ddbac9ceb984b213.png
image
13807623-f8a46f03f0511839.png
image

這就是重新建立上述報告所需的全部內容。

對上述程式碼進行優化

我們可以將列表中的最後一個逗號更改為 “和”,給每個月的值後面加一個月,而不是簡單的以逗號分隔的月值列表:
13807623-96327598e597dd87.png
image

此外,如果顯示了所有月份,最好不顯示非常長的月份列表,而是顯示一些預設文字,如圖:

13807623-7e6557925b61ef0e.png
image

這是用於完成所有這些操作的度量的 DAX:

Title2 =

VAR SelectedDays = VALUES ('Sheet1'[月])

VAR NumberOfSelectedDays = COUNTROWS(SelectedDays)

VAR NumberOfPossibleDays = COUNTROWS (ALL ('Sheet1'[月]))

VAR AllButLastSelectedDay = TOPN(NumberOfSelectedDays-1, SelectedDays)

VAR LastSelectedDay = EXCEPT(SelectedDays, AllButLastSelectedDay)

RETURN

"你" &

IF (NumberOfSelectedDays=NumberOfPossibleDays, "沒有對月份進行篩選",

"選中了" & IF (NumberOfSelectedDays=1, "", CONCATENATEX (AllButLastSelectedDay,'Sheet1'[月]," 月,") &" 月和 ") & LastSelectedDay &" 月 ")
轉自如何使用 DAX 函式解決動態圖表標題

相關文章