Power BI - 计算 IF 语句中每天正确的出现次数,随着时间的推移计算错误的出现次数

问题描述 投票:0回答:1

我有一个长嵌套的 IF 语句度量,我用它来为我拥有的热图着色。 (绿色、黄色和红色)

但是,我想重用它(如果可能的话)来计算绿色的百分比。

我创建的用于生成颜色的度量:(但用颜色代码代替)

ColorMeasure = 
VAR xValue = [Sold Average]
VAR yValue = [Open Average]
RETURN
IF(
    yValue = 1,
    IF(
        xValue < 171, 
        "Green",
        IF(
            ABS(xValue - 171) <= 0.1 * 171,
            "Yellow",
            IF(
                xValue > 171,
                "RED",
                BLANK()
            )
        )
    ),
    IF(
        yValue = 2,
        IF(
            xValue >= 172 && xValue <= 257,
            "Green",
            IF(
                xValue >= 172 * 0.9 && xValue <= 257 * 1.1,
                "Yellow",
                "RED"
            )
        ),
        IF(
            yValue = 3,
            IF(
                xValue >= 258 && xValue <= 490,
                "Green",
                IF(
                    xValue >= 258 * 0.9 && xValue <= 490 * 1.1,
                    "Yellow",
                    "RED"
                )
            ),
            IF(
                yValue = 4,
                IF(
                    xValue > 491,
                    "Green",
                    IF(
                        xValue >= 491 * 0.9,
                        "Yellow",
                        "RED"
                    )
                ),
                BLANK()
            )
        )
    )
)

所以我想做的是这样的

除(_GreenCount,(_GreenCount+_YellowCount+_RedCount)) 但不知道如何正确地进行计数。

我尝试过使用类似的东西:

VAR _Colors1 =
    ADDCOLUMNS (
        DISTINCT ( TableC[Hour] ),
        "@Color", [ColorMeasure]
    )
VAR _Colors2 =
    ADDCOLUMNS (
        DISTINCT ( TableY[Hour] ),
        "@Color", [ColorMeasure]
    )

VAR _Green = COUNTROWS ( FILTER ( _Colors1, [@Color] = "Green" ) )
VAR _All   = COUNTROWS ( _Colors2 )
RETURN
    DIVIDE ( _Green, _All )

当我查看每天的数据时,这给了我正确的时间。但当我查看一整周时,它给出的百分比是错误的。 例子, 绿色/整周全部:

10/16   = 63%
13/17   = 76%
11/17   = 65%
13/19   = 68%
7/21    = 33%
4/21    = 19%
7/17    = 41%

意味着整周将为 65/128 = 51% 但测量结果是67%,这让我很困惑。

我不太确定哪里出了问题以及如何解决。 有什么建议么?谢谢

powerbi dax
1个回答
0
投票

可能是因为每小时查看一次,而当查看超过一天时,时间会重叠,并且您会丢失粒度计算。如果没有看到您的数据表,很难确定。

无论如何,看看这是否适合您(我假设每行是一个小时)。

Your Measure = 
  DIVIDE(
    COUNTROWS(FILTER(TableC, [ColorMeasure] = "Green")),
    COUNTROWS(TableC)
  )

如果您的表不是每小时行数,请尝试以下替代方案:

Your Measure = 
  var tbl = 
    SUMMARIZE(
      TableC,
      [Date],
      [Hour],
      "Color", [ColorMeasure]
    )
  return
    DIVIDE(
      COUNTROWS(FILTER(tbl, [Color] = "Green")),
      COUNTROWS(tbl)
    )
© www.soinside.com 2019 - 2024. All rights reserved.