DAX,计算层次结构内度量的平均值

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

我需要解决 DAX 遇到的问题,但我找不到正确的查询。 给您一些背景信息:我的数据中有不同的区域,其值包括 T100、T200、T300 等。它们可以在表 Geography 的 RegionLevel2 列中找到。然后,在同一个表中,有一个名为 TerrLevel1 的列,其中包含领土。每个地区都有多个领地。例如,区域 T100 的领土为 T101、T102、T103 等。对于每个地区,我根据其各自的销售额计算了一个分数。这是一个名为 Score1 的衡量标准,运行良好。现在我需要计算各区域的分数。该分数基于某个地区的平均销售额。因此,对于 T100,其分数将是 T101、T102、T103 等的 Score1 的平均值。我已经尝试过这些 DAX 公式:

AVERAGEX(Geography, [Score1])

AVERAGEX(all(Geography[TerrLevel1]), [Score1])

AVERAGEX(VALUES(Geography[TerrLevel1]), [Score1])

CALCULATE( AVERAGEX(Geography, [Score1]),ALL(Geography[TerrLevel1]))

但它没有给我正确的结果。我想我需要以某种方式进行过滤,将正确的领土与其所在区域分组,但我不知道如何进行。

我将不胜感激任何形式的帮助。谢谢!

powerbi dax average
1个回答
0
投票

如果您没有地域背景,您原来的衡量标准(我将其命名为“平均”)应该有效。 现在假设您有一个区域的上下文:

  • 你必须用ALL取消区域上下文;
  • 那么这可能取决于您是否有明确的区域上下文:

如果区域上下文是明确的,这应该足够了:

=IF(HASONEVALUE(Geography[RegionLevel2]),
    CALCULATE([Avg],
              ALL(Geography[TerrLevel1])),
    BLANK())

但我建议您考虑到区域上下文可能并不总是明确的,因此使用以下(更安全的)措施:

=IF(HASONEVALUE(Geography[RegionLevel2]),
    CALCULATE([Avg],
              Geography[RegionLevel2] = VALUES(Geography[RegionLevel2]),
              ALL(Geography[TerrLevel1])),
    BLANK())

此措施的缺点是,如果多个区域属于上下文(通常为总计或小计),则您将得不到任何值(空白),但我不知道您的确切需求。

© www.soinside.com 2019 - 2024. All rights reserved.