如何在Power BI中编写DAX度量值统计双日期列符合条件的行数
DAX度量值解决方案:统计指定日期范围内的有效记录行数
需求回顾
需要统计同时满足以下条件的记录行数:
Work Date ≤ 指定基准日期Paid Date ≥ 指定基准日期
已知测试结果:- 基准日期为2023/10/1时,返回4条记录
- 基准日期为2023/11/1时,返回5条记录
数据模型包含激活与非激活的表关系。
正确DAX写法
适配日期维度表的通用版本
有效记录数 = VAR 选定基准日期 = SELECTEDVALUE('日期表'[日期]) RETURN CALCULATE( COUNTROWS('事实表'), '事实表'[Work Date] <= 选定基准日期, '事实表'[Paid Date] >= 选定基准日期, -- 若Paid Date/Work Date与日期表为非激活关系,取消注释以下行并替换对应字段 -- USERELATIONSHIP('事实表'[Paid Date], '日期表'[日期]), ALL('日期表') -- 清除日期表的上下文筛选,确保计算基于指定基准日期 )
无日期维度表版本(直接用切片器选日期)
有效记录数 = VAR 选定基准日期 = SELECTEDVALUE('事实表'[筛选日期]) -- 替换为切片器绑定的日期字段 RETURN CALCULATE( COUNTROWS('事实表'), '事实表'[Work Date] <= 选定基准日期, '事实表'[Paid Date] >= 选定基准日期 )
关键说明
- 上下文控制:
ALL('日期表')用于消除日期表的默认筛选上下文,确保计算仅基于用户选定的基准日期,不受其他日期筛选器干扰。 - 非激活关系处理:如果
Work Date或Paid Date与日期表的关系为非激活状态,必须通过USERELATIONSHIP函数显式调用该关系,否则筛选条件无法生效。 - 日期取值:
SELECTEDVALUE用于获取用户通过切片器、卡片等交互方式选定的日期,若需固定测试日期,可替换为DATE(2023,10,1)这类固定日期表达式。
测试验证
- 选定基准日期为
2023/10/1时,度量值返回4条记录,符合预期 - 选定基准日期为
2023/11/1时,度量值返回5条记录,符合预期
内容的提问来源于stack exchange,提问作者AutomaticcData
相关产品推荐
相关产品推荐

