RAWSQL_AGG_INT函数的使用
更新时间: 2024-12-19 16:23:14
阅读 571
RAWSQL_AGG_INT函数的使用
场景:我需要算出每个月的离职率,但是我用表计算拿到上个月的数据之后,无法在进行下一步的计算。
这个实际上我们是需要根据年月进行降序排序,然后通过偏移函数,在当前行拿到下一行的数据,因为下一行的就是上一个月的数据,如下图:
如果用表计算,表计算是在当前页进行计算,肯定是不行的。
这个时候就需要用到直通函数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
那么如何在有数的直通函数里面使用呢?
我们新建一个计算字段:
把函数写入到直通函数里面,并根据函数规则设置通配符:
分解:%1 是第一个通配符;%2 是第二个通配符。分别对应后面的sum([记录数])和DATETRUNC("month",[create_time(new_report)]))
然后我们将这个字段拖入到表格里面就可以实现了:
然后就可以基于这个值进行下一步计算。
新版本有数支持date_offset_query函数,就不需要直通函数这么麻烦了,目前date_offset_query无法和fixed结合使用文档反馈
以上内容对您是否有帮助?