语法作用
计算基于数值排序的累计占比,这是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函数可用于要累计的值存在重复时的场景,该函数将逐个处理重复值以得到不同的累计占比。如下图所示:






