人生没有彩排
每一天都是现场直播

XF.Analysis.CumulativePctExact

语法作用

计算基于数值排序的累计占比,这是XF.Analysis.CumulativePct函数的精确版本,用于要累计的值存在重复时的场景,该函数将逐个处理重复值以得到不同的累计值。

注意:该函数的实现使用窗口函数来定位当前值,将以tbl参数作为窗口函数的relation参数,使用时需要满足窗口函数的限制。最佳实践:将要累计的维度字段作为tbl参数。

XF.Analysis.CumulativePctExact(tbl:table,expression:expr,sortOrder:int64)

函数代码

该函数的实现代码如下:

/// 计算基于数值排序的累计占比,这是XF.Analysis.CumulativePct函数的精确版本,用于要累计的值存在重复时的场景,该函数将逐个处理重复值以得到不同的累计值。注意:该函数的实现使用窗口函数来定位当前值,将以tbl参数作为窗口函数的relation参数,使用时需要满足窗口函数的限制。最佳实践:将要累计的维度字段作为tbl参数
FUNCTION XF.Analysis.CumulativePctExact = (tbl:table,expression:expr,sortOrder:int64) => 
    VAR BaseVal = expression
    RETURN
    IF(NOT sortOrder IN {0,1},
        ERROR("sortOrder参数的可选取值仅为0或1"),
        IF(NOT ISBLANK(BaseVal),
            VAR TempTbl = ADDCOLUMNS(tbl,"Val",expression)
            VAR TotalVal = SUMX(TempTbl,[Val])
            VAR CumulativeSum = 
                IF(sortOrder>0,
                    SUMX(
                        WINDOW(1,ABS,0,TempTbl,ORDERBY([Val],ASC)),
                        [Val]
                    ),
                    IF(MAXX(TempTbl,[Val])<BaseVal,
                        TotalVal,
                        SUMX(
                            WINDOW(1,ABS,0,TempTbl,ORDERBY([Val],DESC)),
                            [Val]
                        )
                    )
                )
            RETURN
            DIVIDE(CumulativeSum,TotalVal)
        )
    )

应用示例

按产品类别分类,降序累计各产品的采购价格,计算累计占比。

XF.Analysis.CumulativePctExact(ALL('产品'[产品名称]),[采购价],0)

结果如下图所示:

此外,与XF.Analysis.CumulativePct函数相比,XF.Analysis.CumulativePctExact函数可用于要累计的值存在重复时的场景,该函数将逐个处理重复值以得到不同的累计占比。如下图所示:

赞(0) 打赏
版权声明:本文为夕枫的原创文章,著作权归作者所有,未经允许不得转载
文章名称:《PowerBI DAX自定义函数-XF.Analysis.CumulativePctExact》
文章链接:https://www.ximaple.com/posts/1557.html
订阅评论
提醒
guest
0 评论
最新
最久 最赞
内联反馈
查看所有评论

觉得文章有用的话就支持一下吧~

感谢您的打赏支持,我将持续输出有价值的内容!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册

Operation don't support