利用DAX实现动态显示图表标题

小伙伴们好啊,今天为大家分享两个通过DAX动态显示标题的案例。

案例一:

一起看下效果图:

利用DAX实现动态显示图表标题_第1张图片

标题可以根据切片器中的选择动态显示,当选择的月份超过4个时,显示为“**等月份的销售额”,度量值如下:

TitleDynamic_1 =

VAR DistinctMonths =

DISTINCTCOUNT ('Date'[MonthNumber] ) --切片器中选择的月份的不重复计数

VAR MaxMonthsToShow =4--定义显示的月份数量

RETURN

IF (

DistinctMonths > MaxMonthsToShow,

CONCATENATEX (

TOPN (

MaxMonthsToShow,

VALUES ('Date'[MonthNumber] ),

'Date'[MonthNumber], ASC

),

'Date'[MonthNumber],

", ",

[MonthNumber] --指定排序的表达式,第五参数省略默认升序

) &"等月份销售额", --当切片器中选择的月份数量超过需显示的月份时,连接前4个月份,并连接字符串"等月份销售额"

CONCATENATEX (

VALUES ('Date'[MonthNumber] ),

'Date'[MonthNumber],

", "--第四第五参数省略

) &"月份销售额"--当切片中选择的月份数量小于需四按时的月份时,连接各月份

)

理解该度量值的关键在于熟练使用CONCATENATEX函数,语法如下:

CONCATENATEX(,[,][,[,[][,[,[][,...]]]]])

该函数本质上是一个迭代器,前两个参数是必选参数,后三个为可选参数。一参指定一张表,二参指定为一参中的表的每一行计算的表达式,三参指定连接的符号。第四第五参数省略时,用第三参数逐行连接第二参数计算结果。

第四参数指定对二参计算结果排序的表达式,第五参数指定第四参数的排序方式(DESC/ASC):第五参数省略时,默认根据第四参数表达式的结果对第二参数升序排序。

配合注释,相信大家回过头去看这个度量值,会很好理解。值得注意的是,TOPN的第四参数指定为升序,获取切片器中选中状态的前4个月份。如果直接连接的话,会按照降序连接各个月份。这个时候CONCATENATEX的第四参数就派上了用场。小伙伴们可以尝试把第四参数改为度量值Sales Amount,按照选中的月份销售额高低动态显示标题,加深对最后两个参数的理解。

案例二:

老规矩,还是先看效果图:

利用DAX实现动态显示图表标题_第2张图片

当切片器中选择的月份是连续的时候,则用“-”连接,省略中间的月份。如不连续,则用“,”连接后面的月份。实现该效果的度量值如下:

TitleDynamic_2 =

VARSelectedMonthNumbers =

VALUES ('Date'[Month Number] ) --切片器中选择的月份

VARMonthAndNames =

SUMMARIZE ('Date','Date'[Month Number],'Date'[Month] ) --指定CONCATENATEX的第一参数,返回需迭代的表

VARResult =

CONCATENATEX (

MonthAndNames,

VARCurrentMonthNumber ='Date'[Month Number]

VARCurrentMonthName ='Date'[Month]

VARIsNextSelected = CurrentMonthNumber +1IN SelectedMonthNumbers --下一个月份是否处于选中状态

VARIsPrevSelected = CurrentMonthNumber -1IN SelectedMonthNumbers --上一个月份是否处于选中状态

RETURN

IF(

NOT ( IsPrevSelected && IsNextSelected ), --当前月份的上下两个月份都被选中,返回第三参数空,否则执行第二参数

CurrentMonthName &IF( IsNextSelected ,"-",", ") --下一个月份被选中用当前月份连接"-",未选中连接","

), --根据第一参数计算连接的表达式

"",

'Date'[Month Number] --二参计算结果按月份升序排序

)

RETURN

LEFT ( Result, LEN ( Result ) -2)

有点烧脑。方便小伙伴们理解,假设我们在切片器中选择的月份是2,3,7,8,9,11月份。

日期表被筛选后,SUMMARIZE返回筛选后日期的Month和MonthNumber,公式计算的逻辑如下:

利用DAX实现动态显示图表标题_第3张图片

因为我们是使用","连接的,并且在最后的November的地方会多出一个",",所以通过LEFT函数修正一下,去掉多余的内容,便实现了最终的的效果。

今天的分享就到这里,我们下期再见。

* PowerPivot工坊原创文章,转载请注明出处!


延伸阅读:

使用DAX控制切片器显示

DAX驱动可视化--使用DAX自定义KPI图

Power BI可视化 | 自定义可视化页面主题

一文了解Power BI中DAX公式编辑器的常用快捷键

详细教程 | Power BI网关配置以及门户的计划刷新


如果您想深入学习微软Power BI,欢迎登录网易云课堂试听学习我们的“从Excel到Power BI数据分析可视化”系列课程。或者关注我们的公众号(PowerPivot工坊)后猛戳”在线学习”。

利用DAX实现动态显示图表标题_第4张图片

长按下方二维码关注“Power Pivot工坊”获取更多微软Power BI、PowerPivot相关文章、资讯,欢迎小伙伴儿们转发分享~

利用DAX实现动态显示图表标题_第5张图片

你可能感兴趣的:(利用DAX实现动态显示图表标题)