You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用DAX统计覆盖美国WA、OR、CA三州的唯一产品数量

DAX计算同时覆盖全部指定区域的唯一产品数量实现方案

原代码问题说明

你编写的代码存在两处问题:

  • 语法错误:DISTINCTCOUNT函数仅接受1个参数,你将FILTER逻辑写在了DISTINCTCOUNT的参数括号内,属于语法不合法
  • 逻辑错误:原逻辑仅筛选出在售州属于{WA,CA,OR}集合的产品,只要产品在任意一个目标州有售就会被计数,没有要求覆盖全部三个目标州,因此输出结果不符合预期

正确实现代码

同时覆盖三州的唯一产品数 = 
// 定义目标州集合,后续修改目标区域仅需调整此处即可
VAR TargetStates = {"WA", "CA", "OR"}
// 自动计算目标州总数,避免硬编码数值
VAR TargetStateTotal = COUNTROWS(TargetStates)
RETURN
CALCULATE(
    DISTINCTCOUNT('table1'[product]),
    FILTER(
        // 遍历所有唯一产品
        VALUES('table1'[product]),
        // 筛选出在目标州范围内的在售州数量等于目标州总数的产品(即覆盖全部目标州)
        CALCULATE(DISTINCTCOUNT('table1'[state]), 'table1'[state] IN TargetStates) = TargetStateTotal
    )
)

逻辑说明

  • 先通过变量定义目标州集合和总数,后续调整统计区域仅需修改TargetStates变量即可,扩展性更强
  • 内层FILTER逐行遍历所有唯一产品,对每个产品单独统计它在目标州范围内的在售州数量
  • 仅保留在售州数量和目标州总数相等的产品,也就是同时在所有目标州都有售的产品,最后对这些产品做去重计数

动态适配优化(可选)

如果需要支持通过切片器动态选择统计的州,自动计算覆盖所有选中州的产品数量,可以将前两个变量修改为如下逻辑,无需硬编码目标州:

VAR TargetStates = VALUES('table1'[state])
VAR TargetStateTotal = COUNTROWS(TargetStates)

内容的提问来源于stack exchange,提问作者QT49

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 14:27:01