В данный момент вы не можете установить таблицу назначения при использовании BigQuery Scripting
. Это означает, что решения, основанные на утверждении IF
, не будут работать в вашем случае. Кроме того, кажется, что когда вы устанавливаете таблицу назначения, BigQuery
создает таблицу до выполнения вашего запроса, что означает, что независимо от результатов будет создана таблица.
Запрос ниже только SQL. Другими словами, он не содержит сценариев. Если вы используете его для создания запланированного запроса и установки таблицы назначения, вы увидите, что даже если подзапрос не будет выполнен, будет создана пустая таблица.
SELECT
*
FROM
UNNEST(
(SELECT
(
CASE (SELECT COUNT(1) FROM data.source_table) > 0
WHEN TRUE
THEN (
SELECT ARRAY(
SELECT AS STRUCT *
FROM data.source_table
LEFT JOIN data.other_source_table)
)
END
)
)
)
В качестве обходного пути вы можете сохранить существующий запланированный запрос и создайте еще один запланированный запрос, как показано ниже, для запуска через несколько минут после первого:
IF (SELECT count(1) FROM `dataset.destination_table`) = 0
THEN DROP TABLE `dataset.destination_table`;
END IF
Подводя итог, можно получить следующее решение:
- Запустить запланированный запрос, который создаст таблицу назначения,
- Через несколько минут запустите запланированный запрос, который проверит, является ли созданная таблица пустой. Если это так, таблица будет удалена.
Надеюсь, это поможет