在PowerPivot/DAX中查找计算度量值的百分比



下面是一个与我正在处理的数据集类似的表(尽管要简单得多(,我想计算一些度量值,然后找到度量值的百分位数。

Table Name: Data
Owner  AgeRating   OtherRating
A        1            2
A        4            4
A        4            6
B        3            3
B        3            9
B        7            4
C        8            8
C        4            2

首先-一个小背景:我首先取评级的平均值(按所有者(,然后通过将每个评级除以最大所有者评级来标准化所有评级-这创建了我想取的百分比:

NormAgeRating=
average(Data[AgeRating])/
calculate(
maxx(
SUMMARIZE(Data,[Owner],"avg",average([AgeRating]))
,[avg]
)
,all(Data[owner])
)

我有一个数据透视表,Rows是所有者,然后看起来像

Owner NormAgeRating
A        .5
B       .72
C        1

现在对于问题:我想要新的NormAgeRating的.33percentile.inc。我想用它将每个所有者分类到组中(<=33%ile或>33%ile(这就是我想要达到的目标:

Owner NormAgeRating   33%ile   classification
A        .5            .64     bottom
B       .72            .64     top
C        1             .64     top

我尝试过这种方法,但没有成功,还有许多其他不同groupby的变体等,并且不断得到错误的值:

33%ile=percentilex.inc(all(data[owner]),[NormAgeRating],0.33)

如有任何帮助,将不胜感激

更新:当我以的形式尝试sumxcountxaveragex

=
averagex(
SUMMARIZE(
all(Data[Owner]),
[Owner],
"risk",[NormAgeRating]),
[risk]
)

我得到了正确的值,所以我不确定为什么使用percentilex.inc/exc会产生错误的值。。。

PERCENTELEX(以及所有迭代器函数(在第一个参数中对表进行逐行操作。因此,在尝试计算百分比之前,您需要该表处于所需的粒度,这意味着您需要汇总Data[Owner],以便每个所有者都有一个唯一的行,而不是在原始列上迭代。

记住这一点,这两种度量可以写得类似:

NormAgeRating = 
DIVIDE (
AVERAGE ( Data[AgeRating] ),
MAXX (
SUMMARIZE (
ALL ( Data[Owner] ),
Data[Owner],
"Avg", AVERAGE ( Data[AgeRating] )
),
[Avg]
)
)
33%ile = 
PERCENTILEX.INC (
SUMMARIZE (
ALL ( Data[Owner] ),
Data[Owner],
"Risk", [NormAgeRating]
),
[Risk],
0.33
)

最新更新