首页 > 解决方案 > 在 powerbi 中使用 percentile.exc 超出范围百分位值

问题描述

我是 PowerBi 的新手,需要一些帮助来弄清楚如何使 percentile.exc 函数工作(我不能使用 percentile.inc)。

我系统地收到以下错误:百分位值应在 1/(N+1)..N/(N+1) 范围内,其中 N 是数据值的数量。

此代码的目的是在另一个计算列中计算给定比率的 3 个月滚动第 90 个百分位。

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

这是我到目前为止提出的:

3MonthsRolling_90thPercentile= 
VAR current_date = Table1[Date]
VAR k = 0.9
VAR NumValues =
COUNT (Table1[Ratio] )
VAR LowerBound = 1 / ( NumValues + 1 )
VAR UpperBound = NumValues / ( NumValues + 1 )

RETURN
CALCULATE (
IF (AND ( PERCENTILE.EXC ( Table1[Ratio],0.9) >= LowerBound, PERCENTILE.EXC (Table1[Ratio],0.9) <= UpperBound ),PERCENTILE.EXC ( Table1[Ratio],0.9), BLANK()),
FILTER (
ALL (Table1 ),
Table1[Date]
>= DATE ( YEAR ( current_date ), MONTH ( current_date ) - 3, DAY ( current_date ) )
&& Table1[Date] <= current_date
)
)

标签: powerbidaxpercentile

解决方案


如果NumValues小于 9 英寸,则 0.9 高于您的上限NumValues / ( NumVales + 1 ),因此PERCENTILE.EXC ( Table1[Ratio], 0.9 )会引发错误。

我认为您的措施如下更有意义:

3MonthsRolling_90thPercentile =
VAR current_date = Table1[Date]
VAR DateFiltered =
    FILTER (
        ALL ( Table1 ),
        Table1[Date]
            >= DATE (
                   YEAR ( current_date ),
                   MONTH ( current_date ) - 3,
                   DAY ( current_date )
               )
            && Table1[Date] <= current_date
    )
VAR k = 0.9
VAR NumValues = CALCULATE ( COUNT ( Table1[Ratio] ), DateFiltered )
VAR LowerBound = 1 / ( NumValues + 1 )
VAR UpperBound = NumValues / ( NumValues + 1 )
RETURN
    IF (
        AND ( k >= LowerBound, k <= UpperBound ),
        CALCULATE ( PERCENTILE.EXC ( Table1[Ratio], k ), DateFiltered )
    )

请注意,我是在比较k边界而不是k-percentile。


推荐阅读