如何使用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/ 
posted @ 2018-10-09 15:39  PowerBI365  阅读(5177)  评论(0编辑  收藏  举报