Сбор измененных данных (CD C) - периодически синхронизируйте c наборы данных между промежуточным файлом S3 и таблицами Snowflake - PullRequest
0 голосов
/ 25 мая 2020

Например:

Источник : S3

Обновление по расписанию : 2 раза в день

Цель : Таблица Snowflake

Streaming : NO

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

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

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

1 Ответ

1 голос
/ 25 мая 2020

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

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

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

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

...