以下是示例数据,我正在寻找一种解决方案来计算按国家/地区分组的销售数量的百分位数(第 25、第 50、第 75、第 100)。
因此,基本上根据 unit_quantity 将国家/地区从低、中 1、中 2 或高添加到不同的桶中。因此,如果我在 power bi 中创建如下所示的表,我想创建一个计算度量,将国家/地区添加到这些不同的存储桶中。
目前,我尝试的是在以下 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 很陌生,所以请耐心等待。
答案 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 | 高 |