DAX奇怪地计算平均值

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

我正在尝试计算表格中某些 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? 任何帮助将不胜感激,并在此先感谢您!

powerbi dax average measure
1个回答
0
投票

1º 有必要创建一个列来指示您要评估的上下文级别。 在此解决方案中,此列名为 SUB-TOTAL。

对要评估的上下文使用 1,对不评估的上下文使用 0。

2º 有必要创建一个计算表,该表仅返回要评估的上下文中的值。

3º 使用仅使用要评估的值创建的表,从在步骤 2 中创建的表中的列创建一个“AVERAGE”度量。

有了这个,您将得到正确计算的平均值。

完成这些步骤后,有必要确定您希望如何呈现平均值。

平均数是否只出现在 TOTAL OF THE THE TABLE 中?

如果是这样,只需创建一个条件度量来显示您需要的上下文中的平均值。在这种情况下,我只在 TOTAL 中考虑它。

enter image description here

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])
   )
© www.soinside.com 2019 - 2024. All rights reserved.