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

单关系日期表关联多日期列事实表:非空ID去重计数需求

解决Power BI多日期关联下的ID去重计数问题

问题分析

你之前嵌套CALCULATE+USERELATIONSHIP的写法逻辑有误,这种嵌套会让三个关系的筛选条件同时生效,最终只统计同时满足创建、报价、成交日期都关联日历表的ID,和你要的「任一日期关联」需求完全不符。

正确DAX度量值写法

要实现任一日期关联日历表的非空ID去重计数,需要分别提取三个日期关联场景下的ID集合,再合并后去重统计:

任一日期关联的去重ID计数 = 
// 提取各场景下的ID集合
VAR CreatedIDSet = 
    CALCULATETABLE(
        DISTINCT('事实表'[ID]),
        USERELATIONSHIP('日历表'[日期], '事实表'[创建日期]),
        YEAR('日历表'[日期]) = 2024,
        NOT ISBLANK('事实表'[ID])
    )
VAR QuotedIDSet = 
    CALCULATETABLE(
        DISTINCT('事实表'[ID]),
        USERELATIONSHIP('日历表'[日期], '事实表'[报价日期]),
        YEAR('日历表'[日期]) = 2024,
        NOT ISBLANK('事实表'[ID])
    )
VAR SoldIDSet = 
    CALCULATETABLE(
        DISTINCT('事实表'[ID]),
        USERELATIONSHIP('日历表'[日期], '事实表'[成交日期]),
        YEAR('日历表'[日期]) = 2024,
        NOT ISBLANK('事实表'[ID])
    )
// 合并三个集合并去重,统计数量
VAR AllValidIDs = UNION(CreatedIDSet, QuotedIDSet, SoldIDSet)
RETURN COUNTROWS(AllValidIDs)

关键说明

  • USERELATIONSHIP仅在当前CALCULATETABLE上下文生效,不会修改全局的表关系
  • UNION函数会自动合并三个ID集合并去重,避免重复计数
  • 如果已经通过日历表切片器限定了2024年范围,可以去掉度量值里的YEAR('日历表'[日期]) = 2024条件,直接依赖切片器的筛选结果
  • 显式添加NOT ISBLANK('事实表'[ID])确保只统计非空ID

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 12:22:08