PowerBI中,通常我们会使用折线图来展示数据的趋势情况。但是当数据类别过多的时候,需求也在进一步深入,往往还需要我们将用户关注的重要节点标注出来,例如:最大值和最小值。
很早之前,白茶曾经写过一篇关于《折线图阈限设置》的文章,因为当时PowerBI软件版本的原因,折线图不支持Fx设置动态颜色。后续随着软件版本的迭代和计算组功能的推出,折线图最大值和最小值问题,也有了新的解决方案。
案例数据:
将其导入到PowerBI中,通过以下代码,添加日期表。
Dim_Date =
GENERATE (
CALENDAR ( MIN ( 'Fact_Sales'[DATE] ), MAX ( 'Fact_Sales'[DATE] ) ),
VAR DA = [Date]
VAR YEAR =
YEAR ( DA )
VAR QUARTER =
"Q" & FORMAT ( DA, "Q" )
VAR MONTE =
FORMAT ( DA, "MM" )
VAR DAY =
DAY ( DA )
RETURN
ROW (
"Year", YEAR,
"Quarter", QUARTER,
"Month", MONTE,
"DayOfMonth", DAY,
"YearQuarter", YEAR & QUARTER,
"YearMonth", YEAR & MONTE,
"YearMonthCount",
YEAR * 12 + MONTE
)
)
模型关系如下:
添加基础度量值:
01 基础度量值 =
SUM ( Fact_Sales[Quantity] )
将其拖放到折线图中展示如下:
到这里,我们的准备工作完成。
解析思路:
折线图我们需要将最大值最小值标记出来,那么我们需要求出当前上下文的最大值最小值,才能进行后续的操作。
添加如下代码,求出最大值最小值。
最大值:
02 数据最大值 =
MAXX (
ALLSELECTED ( 'Dim_Date'[YearMonth], Dim_Date[YearMonthCount] ),
[01 基础度量值]
)
最小值:
03 数据最小值 =
MINX (
ALLSELECTED ( 'Dim_Date'[YearMonth], Dim_Date[YearMonthCount] ),
[01 基础度量值]
)
展示效果如下:
注释:
1.ALLSELECTED的作用,是为了根据筛选上下文,获取相对的最大值和最小值;2.ALLSELECTED内部白茶使用了2个参数,是因为白茶使用了按列排序功能,需要将排序依据的筛选效果也清除掉。
有了最大值和最小值,我们就可以通过度量值,来对颜色进行标注了。
03 阈值配色 =
IF (
[01 基础度量值] = [02 数据最大值],
"#FF0000",
IF ( [01 基础度量值] = [03 数据最小值], "#FFC000", "#000000" )
)
展示效果如下:
可以看到最大值最小值的颜色已经标注出来了。
是不是以为到这里就结束了?
NO!并没有!
除了可以通过Fx来标注折线图的最大值和最小值以外,我们还可以通过计算组功能,对此进行补充,例如:添加最大值最小值的文本信息。
在外部工作区,打开Tabular。
选择创建计算组。
添加计算项。
在公式栏输入如下代码:
SELECTEDMEASURE()
将公式栏切换到格式设置页面,添加如下代码:
IF (
[01 基础度量值] = [02 数据最大值],
"最大值:" & SELECTEDMEASUREFORMATSTRING (),
IF (
[01 基础度量值] = [03 数据最小值],
"最小值:" & SELECTEDMEASUREFORMATSTRING (),
SELECTEDMEASUREFORMATSTRING ()
)
)
选择保存,将其应用到PowerBI中,最终展示效果如下:
解释说明:
1.SELECTEDMEASURE可以根据当前上下文,获取到应用的度量值[01 基础度量值];
2.SELECTEDMEASUREFORMATSTRING的作用,是为了正常输出原度量值的格式,即输出[01 基础度量值]的原有格式;
3.不能直接使用[01 基础度量值]作为计算组格式输出结果,会由于数据格式问题报错;4.计算组可以应用到PowerBI文件中,发布到云端或本地报表服务器依然生效。
这里是白茶,一个PowerBI的初学者。