DAX技术问题:计算地域层级内度量值的平均值
DAX计算区域得分问题
数据背景
Geography表中:
RegionLevel2列存储区域(值为T100、T200、T300等)TerrLevel1列存储地区(格式为G0101等),每个区域对应多个地区
已实现地区级度量值Score1(基于销售额计算,运行正常),需求是计算区域得分:对应区域下所有下属地区Score1的平均值。
尝试过的DAX公式
AVERAGEX(Geography, [Score1]) AVERAGEX(all(Geography[TerrLevel1]), [Score1]) AVERAGEX(VALUES(Geography[TerrLevel1]), [Score1]) CALCULATE( AVERAGEX(Geography, [Score1]),ALL(Geography[TerrLevel1]))
问题说明
上述公式均未得到正确结果,核心问题是未在当前区域的筛选上下文下,精准分组计算其下属地区的Score1平均值。补充:当前查询结果的表结构为:第一列是地区(G0101格式),第二列是对应地区的Score1,第三列是当前错误的计算结果。
解决方案
推荐使用以下DAX度量值,确保仅计算当前区域下所有地区的Score1平均值:
方案1(推荐)
区域得分 = CALCULATE( AVERAGEX(VALUES(Geography[TerrLevel1]), [Score1]), ALLEXCEPT(Geography, Geography[RegionLevel2]) )
ALLEXCEPT(Geography, Geography[RegionLevel2]):仅保留当前区域的筛选上下文,移除其他所有筛选(如地区筛选)VALUES(Geography[TerrLevel1]):获取当前区域下的所有唯一地区AVERAGEX:遍历这些地区,计算Score1的平均值
方案2
区域得分 = AVERAGEX( FILTER( ALL(Geography[TerrLevel1], Geography[RegionLevel2]), Geography[RegionLevel2] = MAX(Geography[RegionLevel2]) ), [Score1] )
ALL(Geography[TerrLevel1], Geography[RegionLevel2]):获取所有区域和地区的组合FILTER:筛选出与当前区域匹配的所有地区AVERAGEX:对筛选后的地区计算Score1的平均值
内容的提问来源于stack exchange,提问作者tete
相关产品推荐
相关产品推荐

