如何向现有DAX度量值[Undup Active Clients KPI]新增过滤条件
DAX 度量值修改方案
核心问题
你原有代码的问题在于TREATAS仅传递了ClientWHID的筛选上下文,没有携带Client Services'[Service Month]的上下文,直接新增FILTER条件时无法获取到有效值做比对,导致条件不生效。FILTER本身可以实现你的筛选需求,只需补充上下文传递逻辑即可。
修改后的完整代码
MEASURE 'KPI Measures'[Undup Active Clients KPI] = // 筛选所有符合要求的有效服务记录 VAR filteredValidServices = FILTER ( 'Client Services', 'Client Services'[ClientWHID] > 0 && 'Client Services'[Is No-show] = FALSE () && 'Client Services'[Is Cancellation] = FALSE () && 'Client Services'[Is Non-claimable] = FALSE () ) // 同时提取客户ID和对应服务月份,保留两个维度的匹配依据 VAR clientWithServiceMonth = SUMMARIZE ( filteredValidServices, 'Client Services'[ClientWHID], 'Client Services'[Service Month] ) VAR result = CALCULATE ( [Undup Active Clients], // 传递客户ID的匹配规则 TREATAS ( SUMMARIZE(clientWithServiceMonth, [ClientWHID]), 'Client Episode Metrics'[ClientWHID] ), // 添加入院日期小于等于服务月份的筛选条件 'Client Episode Metrics'[AdmissionDate] <= MAXX(clientWithServiceMonth, [Service Month]), // 可选:移除Client Episode Metrics表的原有外部筛选,避免报表其他维度干扰逻辑 REMOVEFILTERS('Client Episode Metrics') ) RETURN result
注意事项
- 上述代码严格匹配单个客户的入院日期 <= 该客户自己的服务月份的需求,符合你描述的业务逻辑。
- 如果你的报表需要保留
Client Episode Metrics表的外部筛选(比如页面上有入院日期的切片器),删除REMOVEFILTERS('Client Episode Metrics')这一行即可。 - 若你的基础度量值
[Undup Active Clients]本身已经包含了Client Episode Metrics表的客户去重逻辑,无需额外调整该内部度量值。
内容的提问来源于stack exchange,提问作者Hell-1931
相关产品推荐
相关产品推荐

