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

PowerBI中按ISIN分组计算百分位数的问题求助

按ISIN分组计算债券Bid/Ask百分位数的DAX解决方案

问题根源

你当前的公式使用ALLSELECTED(CleansedBenchmark[Securities])破坏了ISIN的分组上下文,导致无法按每个ISIN聚合计算百分位数,因此每行返回自身的PxBid值。以下是两种可行的解决方式:


方案1:在原表中添加计算列(保留每行数据并显示对应ISIN的百分位数)

直接在CleansedBenchmark表中创建计算列,计算每个ISIN的Q1(25%分位数)和Q3(75%分位数):

Bid价格的Q1计算列

Bid_Q1 = 
CALCULATE(
    PERCENTILEX.INC(
        CleansedBenchmark,
        CleansedBenchmark[PxBid],
        0.25
    ),
    ALLEXCEPT(CleansedBenchmark, CleansedBenchmark[ISIN])
)

Bid价格的Q3计算列

Bid_Q3 = 
CALCULATE(
    PERCENTILEX.INC(
        CleansedBenchmark,
        CleansedBenchmark[PxBid],
        0.75
    ),
    ALLEXCEPT(CleansedBenchmark, CleansedBenchmark[ISIN])
)

Ask价格的百分位数(同理)

将上述公式中的PxBid替换为PxAsk,即可得到Ask价格的Q1和Q3。

原理:ALLEXCEPT函数会移除除ISIN外的所有筛选上下文,确保计算范围限定在当前行所属的同一个ISIN的所有数据行内。


方案2:新建汇总表(仅保留ISIN及其对应百分位数)

如果不需要保留原表的每行细节,可创建一张仅包含ISIN和对应百分位数的汇总表:

ISIN_价格百分位数汇总 = 
SUMMARIZE(
    CleansedBenchmark,
    CleansedBenchmark[ISIN],
    "Bid_Q1", CALCULATE(PERCENTILEX.INC(CleansedBenchmark, CleansedBenchmark[PxBid], 0.25)),
    "Bid_Q3", CALCULATE(PERCENTILEX.INC(CleansedBenchmark, CleansedBenchmark[PxBid], 0.75)),
    "Ask_Q1", CALCULATE(PERCENTILEX.INC(CleansedBenchmark, CleansedBenchmark[PxAsk], 0.25)),
    "Ask_Q3", CALCULATE(PERCENTILEX.INC(CleansedBenchmark, CleansedBenchmark[PxAsk], 0.75))
)

原理:SUMMARIZE函数按ISIN分组,对每组数据单独计算指定的百分位数,最终生成一张紧凑的汇总表。


补充:可视化场景下的度量值方案

如果是在Power BI可视化中按ISIN分组展示百分位数,可使用度量值(而非计算列):

Bid_Q1_度量值 = 
PERCENTILEX.INC(
    CALCULATETABLE(CleansedBenchmark, ALLEXCEPT(CleansedBenchmark, CleansedBenchmark[ISIN])),
    CleansedBenchmark[PxBid],
    0.25
)

将该度量值拖入可视化组件,并按ISIN分组,即可正确显示每个ISIN的Bid价格Q1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 18:45:20