【问题标题】:Finding Percentile of a calculated measure in PowerPivot / DAX在 PowerPivot / DAX 中查找计算度量的百分位数
【发布时间】:2020-10-17 00:23:45
【问题描述】:

一个类似于我正在处理的数据集的表(虽然更简单)在下面,我想计算一些度量值,然后找到这些度量值的百分位数。

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 的.33 percentile.inc。我想用它来将每个所有者分类( 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 countxaveragex 时:

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

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

【问题讨论】:

    标签: dax powerpivot


    【解决方案1】:

    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
    )
    

    【讨论】:

    • 嗨,亚历克西斯 - 感谢您的回复。我完全尝试过,该列最终为空,没有任何值。请参阅上面的更新,我可以使用与 averagex 相同的方法,它为我提供了正确的答案。 PercentileX 是否有一些我不知道的限制?
    • 当我复制您的示例数据时,它对我有用。也许您的 PBIX 出现了一些问题,这从您所展示的内容中并不明显。 i.stack.imgur.com/M6je0.png
    猜你喜欢
    • 2022-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    • 2013-06-20
    • 2017-10-12
    • 2017-10-19
    • 1970-01-01
    相关资源
    最近更新 更多