当查询不返回结果时,BigQuery INSERT INTO

时间:2020-03-18 07:55:18

标签: sql google-bigquery sql-insert

我将一些事件保存在BigQuery表(table_a)中。在全天的00:00,我正在执行计划的查询,以将当天收到的特定事件的计数器保存在另一个表(table_b)中。当我收到此事件时,此计划的查询没有任何问题,但是如果那天我没有收到我在查询“此查询未返回任何结果”中收到的任何特定事件,则我想将具有0值的INSIGHT_VALUE添加到table_b。

我该怎么做?

这是我正在使用的计划查询:

INSERT INTO
  `my_project.my_dataset.table_b` (
    DATESTAMP,
    INSIGHT_VALUE)
SELECT
  CURRENT_TIMESTAMP() AS DATESTAMP,
  COUNT(*) AS INSIGHT_VALUE
FROM
  `my_project.my_dataset.table_a`
WHERE
  DATE(event_datestamp, 'Europe/Madrid') = CURRENT_DATE()
  AND event_message LIKE '%specific_event%'
GROUP BY
  DATESTAMP

1 个答案:

答案 0 :(得分:2)

删除GROUP BY

INSERT INTO `my_project.my_dataset.table_b` (DATESTAMP, INSIGHT_VALUE)
    SELECT CURRENT_TIMESTAMP AS DATESTAMP,
           COUNT(*) AS INSIGHT_VALUE
    FROM `my_project.my_dataset.table_a`
    WHERE DATE(event_datestamp, 'Europe/Madrid') = CURRENT_DATE() AND
          event_message LIKE '%specific_event%'

没有GROUP BY 始终的聚合查询返回一行。大多数聚合函数返回NULL值,但是COUNT()返回0

CURRENT_TIMESTAMP是查询中的“常量”,因此不需要将其包含在聚合中-只需在每次返回行时计算该值(当然,在 the 返回的行)。