dax - 在 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
现在的问题是:我想得到percentile.inc
新的 .33 NormAgeRating
。我想用它来将每个所有者分组(<=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)
任何帮助将不胜感激
更新:当我尝试sumx
countx
并averagex
采用以下形式时:
=
averagex(
SUMMARIZE(
all(Data[Owner]),
[Owner],
"risk",[NormAgeRating]),
[risk]
)
我得到了正确的值,所以我不确定为什么 usingpercentilex.inc/exc
会产生错误的值......
解决方案
PERCENTILEX(和所有迭代器函数)在第一个参数中逐行操作表。因此,在尝试计算百分位数之前,您需要该表处于所需的粒度,这意味着您需要进行汇总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
)
推荐阅读
- ios - 如何在 UITableViewCell 中向 UIViews 添加重力?
- javascript - 如何在纯 JavaScript 中获取不包括滚动条的视口大小?
- python - Onnxruntime 错误 9:LeakyRelu 未实现
- node.js - 我如何检查模板并获取它的值?
- python - 如何从线程实例方法访问实例变量?
- python-3.x - Python遍历CSV的每一行以从列表中查找部分字符串匹配
- javascript - 如何在javascript中查找和获取元素的 ::after 或 ::before?
- docker - 副本之间的负载平衡/路由
- javascript - 位置绝对止损从开盘中选择下拉
- mysql - 非常简单查询的小表锁定问题