在 Power BI 中按组计算百分位数

时间:2021-04-01 06:47:22

标签: powerbi dax

以下是示例数据,我正在寻找一种解决方案来计算按国家/地区分组的销售数量的百分位数(第 25、第 50、第 75、第 100)。

enter image description here

因此,基本上根据 unit_quantity 将国家/地区从低、中 1、中 2 或高添加到不同的桶中。因此,如果我在 power bi 中创建如下所示的表,我想创建一个计算度量,将国家/地区添加到这些不同的存储桶中。

enter image description here

目前,我尝试的是在以下 dax 度量中创建 3 个不同的四分位数,然后使用 IF 函数将它们放入不同的存储桶中:

Quartile = 
var FirstQ = 
    CALCULATE(
        PERCENTILE.INC('Sample Table'[unit_quantity], .25),
        ALLSELECTED('Sample Table')
    )
var SecondQ = 
    CALCULATE(
        PERCENTILE.INC('Sample Table'[unit_quantity], .5),
        ALLSELECTED('Sample Table')
    )
var ThirdQ = 
    CALCULATE(
        PERCENTILE.INC(Sample Table'[unit_quantity], .75),
        ALLSELECTED(Sample Table')
    )
var currentVal = SELECTEDVALUE(Sample Table'[unit_quantity])
return
 IF(currentVal <= FirstQ, "Low",
        IF(currentVal > FirstQ && currentVal <= SecondQ, "Mid",
            IF(currentVal > SecondQ && currentVal <= ThirdQ, "Mid 2", "High")
    )
)

但上述措施计算的是完整表格的四分位数,而不是按国家/地区分组。此外,我希望这是动态的,因为我将有一个用于类别列的切片器,因此百分位值应根据类别动态更改。我对 Power BI 很陌生,所以请耐心等待。

1 个答案:

答案 0 :(得分:1)

您可以使用 PERCENTILEX 运行表计算,在本例中为所有国家/地区。 我添加了 ISFILTERED 条件,以便仅在 country 字段存在时显示结果。

计算

Quartile = 
VAR SelectedUnit =
    SUM ( 'Table'[unit_quantity] )
VAR p25 =
    PERCENTILEX.INC (
        ALLSELECTED ( 'Table'[country] ),
        CALCULATE ( SUM ( 'Table'[unit_quantity] ) ),
        0.25
    )
VAR p50 =
    PERCENTILEX.INC (
        ALLSELECTED ( 'Table'[country] ),
        CALCULATE ( SUM ( 'Table'[unit_quantity] ) ),
        0.5
    )
VAR p75 =
    PERCENTILEX.INC (
        ALLSELECTED ( 'Table'[country] ),
        CALCULATE ( SUM ( 'Table'[unit_quantity] ) ),
        0.75
    )
RETURN
    SWITCH (
        ISFILTERED('Table'[country]),
        SelectedUnit <= p25, "Low",
        SelectedUnit > p25
            && SelectedUnit <= p50, "Mid",
        "High"
    )

输出

<头>
国家 单位总和 四分位数
保加利亚 2
加拿大 83
克罗地亚 49
印度 75
俄罗斯 38
美国 69