Мы синхронизируем c данные в нашем проекте от Postgres до BigQuery с пакетом google-cloud-bigquery
python. Это наш рабочий процесс:
- Мы выбираем самую последнюю метку времени в соответствующей таблице BigQuery ( изменено )
- Затем мы выбираем все данные, которые были обновлены позднее. Метка времени BigQuery ( изменено ) из Postgres
- После этого мы удаляем строки, которые должны быть обновлены из BigQuery, с помощью
DELETE FROM {table_name} WHERE id IN UNNEST(@ids)
запрос - Выполнение вставки новых строк (
insertAll
) с помощью метода google.cloud.bigquey.client.insert_rows
для BigQuery
Мы делаем это каждые 3 часа каждый день.
Этот подход успешно работает, но есть проблема, что иногда мы получаем дублированные записи, это кажется, что это появляется после того, как данные взяты из буфера и сохранены в константной таблице.
Это известная проблема bigquery api ? Как избежать дублирования данных.
PS Мы также пробовали insertId
, но это не помогло.