Сбор измененных данных (CDC) - периодическая синхронизация наборов данных между промежуточным файлом S3 и таблицами Snowflake

Например:

Источник: S3

Плановое обновление: 2 раза в день

Target: Стол из снежинок

Потоковое: НЕТ

В День 0 у меня есть таблица клиентов, созданная и загруженная в Snowflake DB. Файлы S3 обновляются 2 раза в день, и они также должны отображаться в таблице Snowflake.

Я хочу найти решение, чтобы следующие 3 случая обрабатывались 2 раза в день без потоковой передачи или обмена сообщениями.

  1. Insert - новые записи
  2. Обновление - существующие записи
  3. Удалить - существующие записи

1 ответ

Если вы хотите, чтобы они всегда синхронизировались, вы можете использовать EXTERNAL TABLESв Snowflake, чтобы таблицы всегда синхронизировались со Snowflake. ПоложитеMATERIALIZED VIEWнад вашей внешней таблицей, и теперь у вас есть таблица Snowflake, синхронизированная с вашими файлами S3. В этом случае каждый раз, когда файл S3 изменяется или добавляется, файл будет загружаться в MV.

https://docs.snowflake.com/en/user-guide/tables-external.html

Если в поступающих файлах есть обновленные записи и удаления, отмеченные в данных как данные CDC, то вместо этого вам потребуется использовать потоки и задачи. Сначала загрузите файл в промежуточную таблицу, используя либоCOPY INTO или Snowpipe (для которого требуется установка SQS), затем поместите поток поверх промежуточной таблицы и, наконец, создайте задачу, которая проверяет поток на наличие новых записей и выполняет MERGE против вашего финального стола.

https://docs.snowflake.com/en/user-guide/data-pipelines.html

Другие вопросы по тегам