如何编写DAX度量值在SSAS Tabular模型中计算州级销产比并展示到对应门店
DAX编写求助:SSAS Tabular中实现按州汇总的比值在对应州所有门店行展示
我正在尝试编写DAX语句,在SSAS Tabular数据模型中创建一个新的度量值。我的需求通过示例展示比文字描述更清晰:当前我的SSAS Tabular数据集可生成如下表格,A、B列来自门店(stores)表,C列是销售(Sales)表的度量值,D列是产品(Products)表的度量值,E列为C/D的计算结果,目前这部分运行正常。相关数据已在Excel中做脱敏处理,可在Power BI中正常加载。

我需要新增一个度量值,计算州级维度的销售额/产品数比值,且该度量值需要在所属州的每个门店行都同步展示,预期效果如下图所示:

我推测需要迭代所有行,先计算对应州的总销售额和总产品销量,再将二者相除得到结果,但一直没能写出正确的DAX语句,我尝试过多种如下结构的组合,但均未成功:
calculate( sumx(...), filter( all(...), ... ) )
希望能获得正确的DAX写法指导。
解决方案
你可以使用ALLEXCEPT函数清除门店维度的筛选,仅保留州维度的筛选上下文即可实现需求,具体写法如下:
注意:代码中
stores[州]、[门店销售额]、[门店产品数]请替换为你数据模型中实际的字段名和已有度量值名称
州级销售额产品数比值 = VAR 当前行所属州 = SELECTEDVALUE( stores[州] ) RETURN DIVIDE( CALCULATE( [门店销售额], ALLEXCEPT( stores, stores[州] ) ), CALCULATE( [门店产品数], ALLEXCEPT( stores, stores[州] ) ), 0 )
逻辑说明
ALLEXCEPT(stores, stores[州])会清除门店表上除了州字段之外的所有筛选条件,确保计算时统计的是当前州所有门店的汇总数据- 使用
DIVIDE函数替代除法运算符/,可以自动处理分母为0的异常,避免返回错误值 - 如果你的数据模型中门店表和销售表、产品表的关系是正常的一对多关联,该度量值可以直接生效,不需要额外调整关系配置
内容的提问来源于stack exchange,提问作者Jim
相关产品推荐
相关产品推荐

