语法作用
返回当前值在值列表中的连续排名,适用于要排名的值存在重复时的场景,该函数将逐个处理重复值以得到不同的排名,排名时忽略空值,sortOrder参数用于控制排名方向,0=降序,1=升序。
注意:该函数的实现使用窗口函数来定位当前值,将以tbl参数作为窗口函数的relation参数,使用时需要满足窗口函数的限制。最佳实践:将要排名的维度字段作为tbl参数。
XF.Analysis.RankByContinued(tbl:table,expression:expr,sortOrder:anyref)
函数代码
该函数的实现代码如下:
/// 返回当前值在值列表中的连续排名,适用于要排名的值存在重复时的场景,该函数将逐个处理重复值以得到不同的排名,排名时忽略空值,sortOrder参数用于控制排名方向,0=降序,1=升序。注意:该函数的实现使用窗口函数来定位当前值,将以tbl参数作为窗口函数的relation参数,使用时需要满足窗口函数的限制。最佳实践:将要排名的维度字段作为tbl参数
FUNCTION XF.Analysis.RankByContinued = (tbl:table,expression:expr,sortOrder:anyref) =>
VAR BaseVal = expression
RETURN
IF(NOT ISBLANK(BaseVal),
VAR TempTbl = FILTER(ADDCOLUMNS(tbl,"Val",expression),NOT ISBLANK([Val]))
RETURN
ROWNUMBER(TempTbl,ORDERBY([Val],sortOrder))
)
应用示例
按采购价降序计算各产品的连续排名。
XF.Analysis.RankByContinued(ALL('产品'[产品名称]),[采购价],0)
结果如下图所示:






