我有一个长嵌套的 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%,这让我很困惑。
我不太确定哪里出了问题以及如何解决。 有什么建议么?谢谢
可能是因为每小时查看一次,而当查看超过一天时,时间会重叠,并且您会丢失粒度计算。如果没有看到您的数据表,很难确定。
无论如何,看看这是否适合您(我假设每行是一个小时)。
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)
)