我正在尝试使用Google BigQuery中的新查询调度功能,但似乎无法将其正确添加到表中。
我将Custom schedule
设置为every 15 minutes
,将Destination table write preference
设置为Append to table
。
SELECT DATETIME_TRUNC(DATETIME(logtime, 'America/Los_Angeles'), MINUTE) log_minute,
COUNT(DISTINCT user_id) users,
COUNT(DISTINCT product_id) unique_products
FROM mytable
WHERE DATE(logtime, 'America/Los_Angeles') >= "2019-05-01"
GROUP BY log_minute
ORDER BY log_minute
我希望每log_minute
看到1行,但是我看到重复:每log_minute
每预定运行1行,因此一小时后,每行有5个重复(1在开始时+每15分钟1个。
答案 0 :(得分:1)
我希望每log_minute看到1行,但我看到重复项:每次计划运行,每log_minute有1行
是否要追加新行?当然,每次查询运行时您都会看到一个新行-因为您要追加行。
如果您想UPDATE
来代替现有的并添加新的,请安排MERGE
。
答案 1 :(得分:0)
谢谢小费,费利佩!对于尝试执行相同操作的任何人,我将查询编辑为以下内容:
MERGE nextvr.sched_test_15min H
USING
(
SELECT TIMESTAMP(DATETIME_TRUNC(DATETIME(logtime, 'America/Los_Angeles'), MINUTE)) log_minute,
COUNT(DISTINCT user_id) users,
COUNT(DISTINCT product_id) products
FROM mytable
WHERE DATE(logtime, 'America/Los_Angeles') >= "2019-05-01"
GROUP BY log_minute
) N
ON H.log_minute = N.log_minute
WHEN MATCHED THEN
UPDATE
SET users = N.users, products = N.products
WHEN NOT MATCHED THEN
INSERT (log_minute, users, products)
VALUES (log_minute, users, products)
在创建计划查询时,请在Destination for query results
部分下的Table name
字段中留空。