我创建了一个定时查询,它返回每天的用户和事务计数。下面是代码:
SELECT
event_date,
COUNT(DISTINCT user_id) users,
COUNT(DISTINCT transaction_id) transactions,
FROM `xyz.events`
WHERE
event_date = current_date
GROUP BY event_date
ORDER BY event_date
上面显示的查询在我手动执行时有效。但是,当我将其用作计划查询时,它不会像它应该的那样更新目标表,即使如果我检查运行情况,它显示查询在特定日期已成功运行。
然而,下面显示的查询实现了这个功能,并完全按照预期运行。它更新目标表中每天的用户和事务计数。SELECT
DATE_SUB(@run_date, INTERVAL 1 DAY) event_date,
COUNT(DISTINCT user_id) users,
COUNT(DISTINCT transaction_id) transactions,
FROM `xyz.events`
WHERE
event_date = DATE_SUB(@run_date, INTERVAL 1 DAY)
GROUP BY event_date
ORDER BY event_date
所以我想了解为什么会发生这种情况?因为当手动运行时,这两个查询给出相同的输出。
欢迎焦虑
当你调用CURRENT_DATE()
函数时,你必须在()
的末尾加上左括号和右括号。在函数调用结束时缺少此内容是该查询在设置为计划查询运行时失败的原因。
至于为什么当你在一个常规的BigQuery查询窗口中运行它时,我不确定,但假设UI必须有一些内置的逻辑来处理缺失的括号,这对于计划查询是不可用的。