问题
我需要使用Power BI内置的动态条件格式来逐行更改颜色。行中的最低值必须是绿色,最高值必须是红色,中间的所有颜色都是介于绿色和红色之间的橙色阴影。问题是,内置的条件格式计算整个矩阵的最大值和最小值,并且没有按列或按行计算最大值和最小值的选项。
示例
下面是一个简单的例子,给定了dimension_1 (颜色)、dimension_2 (年份)和KPI (度量)。在现实中,矩阵比这个大得多(例如15个不同的年份),但这是一个有代表性的例子。
+-------------+-------------+------+------+------+
| dimension_1 | dimension_2 | 2017 | 2018 | 2019 |
+-------------+-------------+------+------+------+
| Red | Measure | 0 | 50 | 100 |
| Blue | Measure | -100 | -50 | 0 |
| Green | Measure | -100 | 0 | 100 |
+-------------+-------------+------+------+------+Power BI会考虑-100作为最小值,+100作为最大值。因此,应用的条件格式如下所示:
+-------------+-------------+--------------+--------------+--------------+
| dimension_1 | dimension_2 | 2017 | 2018 | 2019 |
+-------------+-------------+--------------+--------------+--------------+
| Red | Measure | light orange | dark orange | red |
| Blue | Measure | green | dark orange | yellow |
| Green | Measure | green | yellow | red |
+-------------+-------------+--------------+--------------+--------------+预期的解决方案
预期的解决方案应用条件格式,逐行计算最大值和最小值。因此,在第1行中,最小值为0,最大值为100。如果我们对所有行重复此计算,则会得到以下结果:
+-------------+-------------+-------+--------+------+
| dimension_1 | dimension_2 | 2017 | 2018 | 2019 |
+-------------+-------------+-------+--------+------+
| Red | Measure | green | orange | red |
| Blue | Measure | green | orange | red |
| Green | Measure | green | orange | red |
+-------------+-------------+-------+--------+------+提醒
给定最大值和最小值时,条件格式必须是动态的。换句话说,我不想使用规则来定义固定的颜色,而是让Power BI定义不同的阴影。
发布于 2020-05-23 15:13:10
取自SQLBI,并根据需求进行了修改:
MinMax =
VAR AllList =
CALCULATETABLE (
ADDCOLUMNS (
SUMMARIZE ( Sheet1, Sheet1[Dimension 1], Sheet1[Dimension 2], DimDate[Month] ),
"@Total", [Total]
),
ALLSELECTED ()
)
VAR dm1 =
SELECTEDVALUE ( Sheet1[Dimension 1] )
VAR dm2 =
SELECTEDVALUE ( Sheet1[Dimension 2] )
VAR CurrList =
FILTER (
SELECTCOLUMNS (
AllList,
"Dimension1", [Dimension 1],
"Dimension2", [Dimension 2],
"DMonth", [Month],
"TTotal", [@Total]
),
[Dimension1] = dm1
&& [Dimension2] = dm2
)
VAR MinValue =
MINX ( CurrList, [TTotal] )
VAR MaxValue =
MAXX ( CurrList, [TTotal] )
VAR CurrentValue = [Total]
VAR Result =
SWITCH (
TRUE,
CurrentValue = MinValue, 1,
-- 1 for MIN - green
CurrentValue = MaxValue, 3,
-- 3 for MAX - red
2
)
RETURN
Result

谢谢
https://stackoverflow.com/questions/61950071
复制相似问题