我正在尝试计算表格中某些 ID 的平均值,如下所示。这些字母是每个数字的子类别(4 个唯一值):
ID | 时间 | 平均时间 |
---|---|---|
1 | 104 | 104 |
...一个 | 104 | 104 |
...b | 104 | 104 |
2 | 86 | 86 |
...一个 | 104 | 86 |
3 | 151 | 151 |
...c | 151 | 151 |
...d | 151 | 151 |
总计 | 4(4 个不同的字母) | 110 |
但是,当我计算专栏的 AVG 时,它告诉我平均数是 110,而实际上它应该是 113.6 = (104 + 86 + 151)/3。我正在尝试获取父级别的平均值并忽略子级别。起初,我以为这是加权平均值,但我不明白 PBI 是如何得出 110
这是我的 Dax:
'''
Measure =
var x = CALCULATE(
AVERAGEX(
Table1,
Table1[Time]
)
)
var y = CALCULATE(
DISTINCTCOUNT(Table1[ID])
)
return
DIVIDE(x, y )
''' 如何使 PBI 测量实际显示正确的数量,即 113.6? 任何帮助将不胜感激,并在此先感谢您!
1º 有必要创建一个列来指示您要评估的上下文级别。 在此解决方案中,此列名为 SUB-TOTAL。
对要评估的上下文使用 1,对不评估的上下文使用 0。
2º 有必要创建一个计算表,该表仅返回要评估的上下文中的值。
3º 使用仅使用要评估的值创建的表,从在步骤 2 中创建的表中的列创建一个“AVERAGE”度量。
有了这个,您将得到正确计算的平均值。
完成这些步骤后,有必要确定您希望如何呈现平均值。
平均数是否只出现在 TOTAL OF THE THE TABLE 中?
如果是这样,只需创建一个条件度量来显示您需要的上下文中的平均值。在这种情况下,我只在 TOTAL 中考虑它。
1 -
TABELA AVERAGE =
SUMMARIZE(
Tabela,
Tabela[Index],
"VALOR SUB-TOTAL",
SUMX(
Tabela,
CALCULATE(
IF(
SELECTEDVALUE(Tabela[SUB-TOTAL]) = "1",
AVERAGE(Tabela[Hora]),
BLANK()
)
)
)
)
2 -
AVERAGE =
AVERAGE('TABELA AVERAGE'[VALOR SUB-TOTAL])
3 -
AVERAGE TOTAL =
IF(
ISINSCOPE(Tabela[Index]) = FALSE(),
[AVERAGE],
SELECTEDVALUE(Tabela[Hora])
)