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

利用DAX实现动态显示图表标题_第1张图片
小伙伴们好啊,今天为大家分享两个通过DAX动态显示标题的案例。

案例一:

一起看下效果图:

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

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

TitleDynamic_1 = VAR DistinctMonths =
DISTINCTCOUNT ( ‘Date’[Month Number] ) --切片器中选择的月份的不重复计数 VAR MaxMonthsToShow = 4 --定义显示的月份数量 RETURN
IF (
DistinctMonths > MaxMonthsToShow,
CONCATENATEX (
TOPN (
MaxMonthsToShow,
VALUES ( ‘Date’[Month Number] ),
‘Date’[Month Number], ASC
),
‘Date’[Month Number],
", “,
[Month Number] --指定排序的表达式,第五参数省略默认升序
) & “等月份销售额”, --当切片器中选择的月份数量超过需显示的月份时,连接前4个月份,并连接字符串"等月份销售额”
CONCATENATEX (
VALUES ( ‘Date’[Month Number] ),
‘Date’[Month Number],
", " --第四第五参数省略
) & “月份销售额” --当切片中选择的月份数量小于需四按时的月份时,连接各月份
)

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

CONCATENATEX(

,[,][,[,[][,[,[][,…]]]]])

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

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

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

案例二:

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

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

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

TitleDynamic_2 = VAR SelectedMonthNumbers =
VALUES ( ‘Date’[Month Number] ) --切片器中选择的月份 VAR MonthAndNames =
SUMMARIZE ( ‘Date’, ‘Date’[Month Number], ‘Date’[Month] ) --指定CONCATENATEX的第一参数,返回需迭代的表 VAR Result =
CONCATENATEX (
MonthAndNames,
VAR CurrentMonthNumber = ‘Date’[Month Number]
VAR CurrentMonthName = ‘Date’[Month]
VAR IsNextSelected = CurrentMonthNumber + 1 IN SelectedMonthNumbers --下一个月份是否处于选中状态
VAR IsPrevSelected = CurrentMonthNumber - 1 IN 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,公式计算的逻辑如下:

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

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

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

如果您想深入学习微软Power BI,欢迎登录网易云课堂试听学习我们的“从Excel到Power BI数据分析可视化”系列课程。点击左下角“阅读原文”可直达云课堂。或者关注我们的公众号(PowerPivot工坊)后猛戳”在线学习”。
利用DAX实现动态显示图表标题_第4张图片

长按下方二维码关注“Power Pivot工坊”获取更多微软Power BI、PowerPivot相关文章、资讯,欢迎小伙伴儿们转发分享~
利用DAX实现动态显示图表标题_第5张图片

你可能感兴趣的:(power,BI)