我正在尝试将date_add函数与bigquery中的时间戳一起使用,但是我从输出中得到'null'。我以前成功使用过date_add,所以我不明白问题是什么。这是一些代码。
SELECT
userId,
MAX(most_recent_session) most_recent_session,
date_add(MAX(most_recent_session), 24, 'HOUR') as added_a_day,
FROM
(
SELECT
userId,
LAG(time, 0) OVER (PARTITION BY userId ORDER BY time) as most_recent_session,
LAG(time, 1) OVER (PARTITION BY userId ORDER BY time) as previous_session,
FROM TABLE_DATE_RANGE(dataset.tablename_, TIMESTAMP(DATE_ADD(CURRENT_TIMESTAMP(), -30, "DAY")), CURRENT_TIMESTAMP())
GROUP BY
userId,
time
)
)
group by
userID
所以我期望得到的是三列,第一列包含userId,第二列包含该用户最近会话的时间戳,然后是第三列,其中包含24小时。但是在第三列而不是在第二列中获得24小时的值,我得到'null'。
有什么想法吗?
答案 0 :(得分:2)
我找到了问题的解决方案。你需要包装" most_recent_session'存在于具有USEC_TO_TIMESTAMP函数的SQL的外层。这让我感到奇怪,因为BQ认为这个领域是一个时间戳,但它确实有效。