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

多维度分组计算四分位数时排除当前供应商的DAX实现问题

问题解决方案

原代码问题分析

  • 行上下文与筛选上下文转换逻辑错误:SELECTEDVALUE(df[Vendor])在SUMMARIZE的分组行上下文中虽能取到当前分组的供应商值,但直接在CALCULATE筛选参数中写Vendor_Selected <> df[Vendor]没有清除原有行上下文对Vendor的默认筛选,导致排除逻辑不生效。
  • 未锁定分组维度:没有显式保留Year、Class1、Class2的筛选规则,计算范围会随上下文异常变动。

修正后代码

方案1:计算列(直接写入表中,与你手动计算的Q1列完全匹配)

Q1_Calculated = 
VAR CurrentYear = df[Year]
VAR CurrentClass1 = df[Class1]
VAR CurrentClass2 = df[Class2]
VAR CurrentVendor = df[Vendor]
RETURN
CALCULATE(
    PERCENTILE.INC(df[Rate], 0.25),
    FILTER(
        ALL(df),
        df[Year] = CurrentYear &&
        df[Class1] = CurrentClass1 &&
        df[Class2] = CurrentClass2 &&
        df[Vendor] <> CurrentVendor
    )
)

方案2:度量值(适用于透视表等动态查询场景)

Q1_Measure = 
VAR CurrentVendor = SELECTEDVALUE(df[Vendor])
RETURN
CALCULATE(
    PERCENTILE.INC(df[Rate], 0.25),
    ALLEXCEPT(df, df[Year], df[Class1], df[Class2]),
    df[Vendor] <> CurrentVendor
)

验证说明

以你举的Year2、VendorA、Class2=F的场景为例:排除A之后剩余供应商B、C的Rate值为0.06、0.19、0.12、0.04、0.12,排序后取第25百分位结果为0.06,和你手动计算的Q1值完全一致,5000条数据量级下该代码运行无性能问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:39:03