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

Power BI中是否有类似SUMX+Filter的方式实现DISTINCTCOUNT?

去年同期位置ID去重计数的DAX实现方案

你已实现计算任意选定区间去年销售额的DAX度量值:

Total Net Sales LY = 
VAR MINSequentialDayNumber = MIN('Dim_Date'[SequentialDayNumber-LY])
VAR MAXSequentialDayNumber = MAX('Dim_Date'[SequentialDayNumber-LY])

RETURN
SUMX(
    FILTER(
        ALL(Dim_Date),
        'Dim_Date'[SequentialDayNumber]>=MINSequentialDayNumber && 'Dim_Date'[SequentialDayNumber]<=MAXSequentialDayNumber),[Total Net Sales])

由于DAX中不存在DISTINCTCOUNTX函数,你尝试的代码无法运行,以下是两种无需创建单独去重表的替代实现方案:

方案一:CALCULATE + DISTINCTCOUNT组合

这是最简洁的实现方式,利用CALCULATE的筛选上下文修改能力:

Location Count LY = 
VAR MIN_LY_Day = MIN('Dim_Date'[SequentialDayNumber-LY])
VAR MAX_LY_Day = MAX('Dim_Date'[SequentialDayNumber-LY])
RETURN
CALCULATE(
    DISTINCTCOUNT('Fact_Sales'[Location_ID]), -- 替换为你的事实表位置ID列
    FILTER(
        ALL('Dim_Date'),
        'Dim_Date'[SequentialDayNumber] >= MIN_LY_Day && 'Dim_Date'[SequentialDayNumber] <= MAX_LY_Day
    )
)

方案二:SUMMARIZE + COUNTROWS组合

如果需要更灵活的筛选逻辑(比如同时过滤其他维度),可以先生成唯一位置ID集合再计数:

Location Count LY = 
VAR MIN_LY_Day = MIN('Dim_Date'[SequentialDayNumber-LY])
VAR MAX_LY_Day = MAX('Dim_Date'[SequentialDayNumber-LY])
VAR LY_Unique_Locations = 
    SUMMARIZE(
        FILTER(
            ALL('Fact_Sales'[Location_ID], 'Dim_Date'),
            'Dim_Date'[SequentialDayNumber] >= MIN_LY_Day && 'Dim_Date'[SequentialDayNumber] <= MAX_LY_Day
        ),
        'Fact_Sales'[Location_ID]
    )
RETURN
COUNTROWS(LY_Unique_Locations)

注意事项

  • 将代码中的Fact_Sales替换为你的实际事实表名称,Location_ID替换为需要去重计数的位置ID列
  • 两种方案均无需额外创建去重表,直接在度量值内完成去年同期的位置ID去重计数逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 23:05:33