有这么一个需求,每天数据的走势图,如果时间端很长的话,显示数据标签就会很凌乱。我们的需求是只需要显示我们选中时间段的最大值、最小值、开始值和结束值的标签数据就行了,而且这几个值要根据时间段的变化而动态变化,具体效果如下↓
实现的思路是这样的,我们只需要建立一个组合图形,主图可以用柱状图,然后几个关键值我们可以用在线条图里面。把四个点的图设置成一个单独的值就可以单独显示一个点和标签了。
现在的关键问题是如何实现一个点的设置,这里就需要用到MAXX和MINX函数了,具体的使用方法可以参考《PowerBI函数_MAX、MIN》。这里先以最大值举例,思路是先使用MAXX函数结合ALLSELECTED函数找出所选时间段里面的最大值,然后使用IF语句判断最大值是否等于所选时间段每天的最大值,这样就可以选出所选择时间段的最大一天数据了,然后其他点就设置成BLACK,把这个度量值拖入到线条框里面就可以了,然后稍微设置一下颜色和字体大小,DAX语句和效果如下↓
最大值 = IF(
[销售金额(万)]=MAXX(ALLSELECTED('日期表'[日期]),[销售金额(万)]),
[销售金额(万)],
BLANK())
接下来的最小值实现方式就很简单了,思路都是一样的,只需要把MAXX改成MINX就可以了,DAX语句和加入到图形后的效果如下↓
最小值 = IF(
[销售金额(万)]=MINX(ALLSELECTED('日期表'[日期]),[销售金额(万)]),
[销售金额(万)],
BLANK())
最后再加一个开始值和一个结束值就可以了,思路是一样的,只是需要注意把金额改成日期就行了,筛选日期的最大值和最小值。两个DAX语句和最后的结果如下↓
开始值 = IF(
MIN('日期表'[日期])=MINX(ALLSELECTED('日期表'[日期]),'日期表'[日期]),
[销售金额(万)],
BLANK())
结束值 = IF(
MAX('日期表'[日期])=MAXX(ALLSELECTED('日期表'[日期]),'日期表'[日期]),
[销售金额(万)],
BLANK())
演示这个是柱状图的效果,当然也可以像最开始那样使用折线图的效果。
End