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

如何在Power BI中用DAX基于两列动态计算价格中位数?

在Power BI中用DAX实现按数量重复价格后的中位数计算

假设你的数据源表名为SalesTable(请根据实际表名替换),可以通过以下DAX度量值完成需求:

Weighted Median = 
VAR ExpandedTable = 
    GENERATE(
        SalesTable,
        SELECTCOLUMNS(
            SEQUENCE([数量]),
            "ExpandedPrice", [价格]
        )
    )
RETURN
    MEDIANX(ExpandedTable, [ExpandedPrice])

代码说明

  1. 构建展开表:用GENERATE遍历原表每一行,结合SEQUENCE([数量])生成对应数量的序列(比如数量为2时生成两个元素的序列),再通过SELECTCOLUMNS把序列元素替换为当前行的价格,得到价格按数量重复后的完整数据集。
  2. 计算中位数:用MEDIANX遍历展开后的数据集,直接计算价格列的中位数。

兼容旧版本Power BI(无SEQUENCE函数)

如果你的Power BI版本不支持SEQUENCE函数,可提前创建一个包含连续整数的Numbers表(数值范围覆盖原表中最大的数量值),修改代码如下:

Weighted Median = 
VAR ExpandedTable = 
    GENERATE(
        SalesTable,
        SELECTCOLUMNS(
            FILTER(Numbers, Numbers[Number] <= [数量]),
            "ExpandedPrice", [价格]
        )
    )
RETURN
    MEDIANX(ExpandedTable, [ExpandedPrice])

结果验证

针对你提供的示例数据,展开后的价格数组为[12, 10, 10, 5, 5, 5, 7],排序后为[5, 5, 5, 7, 10, 10, 12],中位数为第4个元素7,上述度量值会正确返回该结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 05:41:22