求DAX公式:多公司跨不同时间跨度的平均值计算
满足需求的DAX度量值实现
核心逻辑
- 单公司筛选场景:直接返回该公司的原始
Count数据; - 多公司(包含Company 1)筛选场景:
- Company 1保留所有日期的实际
Count值; - 其他公司当月天数>6时,用其当月第6天的
Count值替代NULL; - 基于上述规则处理后的数据计算平均值。
- Company 1保留所有日期的实际
DAX度量值代码
Adjusted Avg Count = VAR SelectedCompanies = VALUES('业务数据'[公司]) VAR IsSingleCompany = COUNTROWS(SelectedCompanies) = 1 VAR CurrentMonthDay = MAX('业务数据'[当月天数]) -- 预取非Company1公司的6日Count值 VAR NonComp1_Day6_Value = CALCULATE( MAX('业务数据'[Count]), ALL('业务数据'), '业务数据'[公司] IN EXCEPT(SelectedCompanies, {"Company 1"}), '业务数据'[当月天数] = 6 ) RETURN IF( IsSingleCompany, -- 单公司筛选,返回原始Count MAX('业务数据'[Count]), -- 多公司筛选,计算调整后的平均值 AVERAGEX( SelectedCompanies, VAR CurrentComp = [公司] VAR CompEffectiveCount = IF( CurrentComp = "Company 1", MAX('业务数据'[Count]), IF( CurrentMonthDay <= 6, MAX('业务数据'[Count]), NonComp1_Day6_Value ) ) RETURN CompEffectiveCount ) )
代码细节说明
SelectedCompanies:捕获当前筛选上下文的所有公司集合;IsSingleCompany:判断是否为单公司筛选状态;NonComp1_Day6_Value:提前计算非Company1公司在当月第6天的Count值,避免重复计算;- 外层
IF分支:区分单/多公司场景,多公司场景下用AVERAGEX遍历每个公司,按规则生成有效Count后取平均。
内容的提问来源于stack exchange,提问作者nirnroot
相关产品推荐
相关产品推荐

