Power BI中如何对品牌年份过滤后的城市聚合结果应用PERCENTILE.INC
正确DAX实现方案
问题核心是未先按City完成聚合就直接计算分位数,导致DAX处理的是原始行级数据而非城市级聚合值,最终结果偏离Excel验证值。以下是两种适配不同场景的实现方式:
固定筛选条件(匹配示例场景)
如果需要固定筛选Brand="A"、Year={"2019","2020"},使用这个度量值:
75th Percentile (Fixed Filter) = VAR CityLevelTotals = SUMMARIZE( -- 先筛选符合条件的数据集 FILTER(Table1, Table1[Brand] = "A" && Table1[Year] IN {"2019", "2020"}), -- 按City分组,计算每个城市的总客户数 Table1[City], "Total_Customers", SUM(Table1[Number_of_Customers]) ) -- 对聚合后的城市级客户数计算75分位数 RETURN PERCENTILE.INC(CityLevelTotals[Total_Customers], 0.75)
动态筛选(适配切片器交互)
如果需要通过切片器动态选择Brand和Year,直接利用DAX的上下文筛选,无需硬编码条件:
75th Percentile (Dynamic) = VAR CityLevelTotals = SUMMARIZE( Table1, Table1[City], "Total_Customers", SUM(Table1[Number_of_Customers]) ) RETURN PERCENTILE.INC(CityLevelTotals[Total_Customers], 0.75)
逻辑说明
SUMMARIZE函数先按City分组,计算每个城市在当前筛选条件下的总客户数,生成仅包含城市和对应总客户数的临时表;PERCENTILE.INC基于这个临时表的总客户数字段计算分位数,完全对齐Excel的计算逻辑(Excel也是先聚合城市数据再计算分位数)。
内容的提问来源于stack exchange,提问作者Harry
相关产品推荐
相关产品推荐

