Я использую планировщик, который запускает запрос каждые 5 минут и добавляется к таблице назначения, которая сработала в первый раз, но вскоре после того, как я получил сообщение об ошибке: google.api_core.exceptions.Forbidden: 403 Quota exceeded: Your table exceeded quota for imports or query appends per table.
SELECT
job_id,
creation_time,
query,
total_bytes_processed
FROM `region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
WHERE project_id ='project-name'
AND creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
AND CURRENT_TIMESTAMP()
ORDER BY creation_time DESC
LIMIT 100
Это возможно, чтобы при каждом запуске этого запроса добавлялись только новые строки, а при наличии дубликатов из предыдущего запроса эти строки игнорировались.
Обновление: я нашел оператор слияния, который позволит запросу добавлять новые строки, если они не совпадают, если мои логики c верны.
MERGE project-id.dataset.table as Target
USING
(
SELECT
job_id,
creation_time,
query,
total_bytes_processed
FROM `region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
WHERE project_id ='project-id-name'
AND creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
AND CURRENT_TIMESTAMP()
ORDER BY creation_time DESC
LIMIT 100
) Query
ON Target = Query
WHEN NOT MATCHED THEN
INSERT (ROW)