这是我的基本表格的构建方式:
我的用户使用各种操作日期作为时间戳(日期,小时,分钟,秒)。用户的动作间隔几天或几个小时。我正在尝试使用LAG功能为每个用户查找每个动作之间的间隔。当我将时间戳记为DATES时,我在Snowflake中的查询工作正常。但是,当用户在同一天内进行2次操作时,我的时间间隔为0。我想查看基于分钟(或秒,没关系)的时间间隔。这是我在雪花中使用的当前查询:
SELECT
USERS,
RANK() OVER(PARTITION BY USERS ORDER BY ACTION_DATE ASC) RowNumber,
CAST(ACTION_DATE AS DATE),
(CAST(ACTION_DATE AS DATE) - LAG(CAST(ACTION_DATE AS DATE)) OVER (PARTITION BY users ORDER BY ACTION_DATE)) AS TIME_INTERVAL
from TABLE1
ORDER BY 1,2,3;
到目前为止,此查询在Snowflake中运行正常,但我需要能够使用时间戳获取这些时间间隔,而不仅仅是将时间戳转换为日期。
我在Snowflake中得到的错误是:
SQL编译错误:第21位错误第6行函数'-'的无效参数类型:(TIMESTAMP_NTZ(9),TIMESTAMP_NTZ(9))
有人知道我如何将我的滞后功能与时间戳一起使用,或者是否应该使用其他功能?
如果您希望有所不同,请使用datediff()
或timestampdiff()
。几秒钟:
DATEDIFF(second,
LAG(ACTION_DATE) OVER (PARTITION BY users ORDER BY ACTION_DATE),
ACTION_DATE
) AS DIFF_SECONDS
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句