RAWSQL_AGG_INT函数的使用

场景:我需要算出每个月的离职率,但是我用表计算拿到上个月的数据之后,无法在进行下一步的计算。

这个实际上我们是需要根据年月进行降序排序,然后通过偏移函数,在当前行拿到下一行的数据,因为下一行的就是上一个月的数据,如下图:

RAWSQL_AGG_INT函数的使用 - 图1

如果用表计算,表计算是在当前页进行计算,肯定是不行的。

这个时候就需要用到直通函数RAWSQL_AGG_INT,以mysql数据源为例(不同的数据源偏移函数不一样)mysql的偏移函数为lag(),lag()函数的使用可以去网上搜索一下,这里简单介绍一下:

lag(exp_str,offset,defval) over(partion by ......order by ......)

说明:
exp_str是字段名称。 offset是偏移量,即是上1个或上N个的值,假设当前行在表中排在第5

行,则offset 为3,则表示我 们所要找的数据行就是表中的第2行(即5-3=2)。offset默认值为1。

defval默认值,当两个函数取上N/下N个值,当在表中从当前行位置向前数N行已经超出了表的

范 围时,lag()函数将defval这个参数值作为函数的返回值,若没有指定默认值,则返回NULL

那么如何在有数的直通函数里面使用呢?

我们新建一个计算字段:

RAWSQL_AGG_INT函数的使用 - 图2

把函数写入到直通函数里面,并根据函数规则设置通配符:

RAWSQL_AGG_INT函数的使用 - 图3

分解:%1 是第一个通配符;%2 是第二个通配符。分别对应后面的sum([记录数])和DATETRUNC("month",[create_time(new_report)]))

然后我们将这个字段拖入到表格里面就可以实现了:

RAWSQL_AGG_INT函数的使用 - 图4

然后就可以基于这个值进行下一步计算。

新版本有数支持date_offset_query函数,就不需要直通函数这么麻烦了,目前date_offset_query无法和fixed结合使用