Сбор измененных данных (CDC) - периодическая синхронизация наборов данных между промежуточным файлом S3 и таблицами Snowflake
Например:
Источник: S3
Плановое обновление: 2 раза в день
Target: Стол из снежинок
Потоковое: НЕТ
В День 0 у меня есть таблица клиентов, созданная и загруженная в Snowflake DB. Файлы S3 обновляются 2 раза в день, и они также должны отображаться в таблице Snowflake.
Я хочу найти решение, чтобы следующие 3 случая обрабатывались 2 раза в день без потоковой передачи или обмена сообщениями.
- Insert - новые записи
- Обновление - существующие записи
- Удалить - существующие записи
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