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

DAX中基于日期切片器与地点筛选的ID去重计数问题求助

DAX度量值:结合日期切片器与地点筛选计算去重ID计数

问题描述

现有如下数据集:

IDDateAssetLocation
1457/29/22AMarket
1457/30/22AWarehouse
1457/29/22BMarket
1457/29/22CTruck
1507/30/22BMarket
1457/29/22DMarket
1457/30/22AMarket

需求:结合日期切片器的筛选结果与地点筛选,计算ID的去重计数。例如当日期切片器选中7/29/22和7/30/22,且地点为Market时,期望结果为2(ID 145和150)。

尝试的DAX度量值未得到正确结果:

IDsMarket =
CALCULATE (
    DISTINCTCOUNT ( 'Products'[ID] ),
    ALL ( 'Products' )
)

该度量值放置在卡片可视化组件中,需要实现选中多日的合并去重计数,使用COUNTROWS也未实现去重效果。

解决方案

你之前的度量值问题在于ALL('Products')清除了所有筛选上下文(包括日期切片器和地点筛选),所以无法得到正确结果。正确的做法是只添加地点为Market的筛选条件,同时保留切片器带来的日期筛选上下文:

方法一:直接添加地点筛选

IDsMarket =
CALCULATE (
    DISTINCTCOUNT ( 'Products'[ID] ),
    'Products'[Location] = "Market"
)

这个度量值会自动继承日期切片器的筛选,同时只统计Location为Market的去重ID数量。当日期切片器选中7/29/22和7/30/22时,会正确返回2。

方法二:使用KEEPFILTERS保留原有筛选(可选)

如果需要更明确地保留切片器的筛选,可以用KEEPFILTERS:

IDsMarket =
CALCULATE (
    DISTINCTCOUNT ( 'Products'[ID] ),
    KEEPFILTERS ( 'Products'[Location] = "Market" )
)

KEEPFILTERS确保地点筛选不会覆盖原有切片器的筛选条件,结果和方法一一致,适合更复杂的筛选场景。

验证逻辑

当日期切片器选中7/29/22和7/30/22时,符合Location=Market的行是:

  • ID145的7/29/22(A、B、D)和7/30/22(A)
  • ID150的7/30/22(B)
    去重后ID为145和150,所以计数为2,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 04:54:16