首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有最大和最小的逐行动态条件格式

具有最大和最小的逐行动态条件格式
EN

Stack Overflow用户
提问于 2020-05-22 15:43:52
回答 1查看 500关注 0票数 0

问题

我需要使用Power BI内置的动态条件格式来逐行更改颜色。行中的最低值必须是绿色,最高值必须是红色,中间的所有颜色都是介于绿色和红色之间的橙色阴影。问题是,内置的条件格式计算整个矩阵的最大值和最小值,并且没有按列或按行计算最大值和最小值的选项。

示例

下面是一个简单的例子,给定了dimension_1 (颜色)、dimension_2 (年份)和KPI (度量)。在现实中,矩阵比这个大得多(例如15个不同的年份),但这是一个有代表性的例子。

代码语言:javascript
复制
+-------------+-------------+------+------+------+
| 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作为最大值。因此,应用的条件格式如下所示:

代码语言:javascript
复制
+-------------+-------------+--------------+--------------+--------------+
| 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。如果我们对所有行重复此计算,则会得到以下结果:

代码语言:javascript
复制
+-------------+-------------+-------+--------+------+
| dimension_1 | dimension_2 | 2017  |  2018  | 2019 |
+-------------+-------------+-------+--------+------+
| Red         | Measure     | green | orange | red  |
| Blue        | Measure     | green | orange | red  |
| Green       | Measure     | green | orange | red  |
+-------------+-------------+-------+--------+------+

提醒

给定最大值和最小值时,条件格式必须是动态的。换句话说,我不想使用规则来定义固定的颜色,而是让Power BI定义不同的阴影。

EN

回答 1

Stack Overflow用户

发布于 2020-05-23 15:13:10

取自SQLBI,并根据需求进行了修改:

代码语言:javascript
复制
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

谢谢

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61950071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档