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


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

 

 

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

 

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

 

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

 

解決方案分為兩部分

第一部分是創建一個度量它將返回圖表標題所需的文本,這依賴於DAX函數ConcatenateX()。這是衡量標准的DAX:

Title = "你選中了 "

& CONCATENATEX(

VALUES(Sheet1[月]),

Sheet1[月],

", "

)

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

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

 

 

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

 

對上述代碼進行優化

我們可以將列表中的最后一個逗號更改為“和”,給每個月的值后面加一個月,而不是簡單的以逗號分隔的月值列表:

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

這是用於完成所有這些操作的度量的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 & "月")


 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/ 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM