Изменение записи данных из Snowflake с помощью задания копирования (предварительная версия)

В этом руководстве описывается, как использовать запись измененных данных (CDC) в задании копирования для эффективной репликации изменений данных из Snowflake в место назначения. Это гарантирует, что данные назначения остаются актуальными автоматически.

Предпосылки

Прежде чем начать, убедитесь, что у вас есть следующее:

Требования к Snowflake:

  • Учетная запись Snowflake с доступом к базе данных и схеме, содержащей исходные таблицы.
  • Привилегия OWNERSHIP в таблицах, в которых требуется включить отслеживание изменений. Кроме того, для включения отслеживания изменений можно использовать привилегию MODIFY.
  • Привилегии USAGE в базе данных и схеме, содержащей таблицы.
  • Привилегия SELECT в таблицах для чтения данных.
  • Таблицы должны иметь период хранения данных (минимум 0 дней, максимум 90 дней). Срок хранения должен быть длиннее запланированного интервала задания копирования, чтобы предотвратить потерю измененных данных.

Дополнительные сведения о разрешениях Snowflake и отслеживании изменений см. в разделе "Права управления доступом " и "Введение в потоки".

Требования структуры:

  • Рабочая область Fabric с необходимыми разрешениями для создания задания на копирование.
  • Целевое хранилище данных, которое поддерживается заданием копирования для репликации CDC.

Подсказка

Используйте роли SECURITYADMIN или SYSADMIN в Snowflake, чтобы предоставить необходимые привилегии на объекты. Роль ACCOUNTADMIN может потребоваться для определенных конфигураций на уровне учетной записи.

Включение отслеживания изменений в Snowflake

Snowflake использует отслеживание изменений на уровне таблицы для отслеживания изменений данных. Отслеживание изменений должно быть включено в каждой таблице по отдельности. Выполните следующие действия, чтобы включить отслеживание изменений в таблицах Snowflake:

  1. Подключитесь к учетной записи Snowflake с помощью веб-интерфейса Snowflake, SnowSQL или другого клиента SQL.

  2. Включите отслеживание изменений для каждой таблицы, которую вы хотите отслеживать. Для каждой таблицы выполните следующую команду SQL:

    ALTER TABLE <schema_name>.<table_name> SET CHANGE_TRACKING = TRUE;
    

    Замените <schema_name> и <table_name> вашими именами схем и таблиц.

    Пример:

    ALTER TABLE sales.customers SET CHANGE_TRACKING = TRUE;
    ALTER TABLE sales.orders SET CHANGE_TRACKING = TRUE;
    
  3. (Необязательно) Включите отслеживание изменений при создании новой таблицы:

    CREATE TABLE <schema_name>.<table_name> (
      column1 STRING,
      column2 NUMBER
    ) CHANGE_TRACKING = TRUE;
    
  4. Убедитесь, что отслеживание изменений включено. Выполните следующую команду, чтобы проверить состояние:

    SHOW TABLES LIKE '<table_name>' IN SCHEMA <schema_name>;
    

    В выходных данных найдите столбец change_tracking и подтвердите, что он отображает ON.

    В качестве альтернативы, выполните запрос INFORMATION_SCHEMA:

    SELECT table_catalog, table_schema, table_name, change_tracking
    FROM <database_name>.INFORMATION_SCHEMA.TABLES
    WHERE table_schema = '<schema_name>'
      AND table_name = '<table_name>';
    

Замечание

  • Отслеживание изменений — это свойство уровня таблицы в Snowflake, которое отслеживает операции INSERT, UPDATE и DELETE.
  • Для включения отслеживания изменений необходимо иметь OWNERSHIP привилегию на таблицу или MODIFY привилегию.
  • Отслеживание изменений использует дополнительное хранилище для метаданных, но требуется для таких функций, как потоки и шаблоны CDC.
  • Snowflake сохраняет данные отслеживания изменений в соответствии с периодом хранения данных таблицы (минимум 0 дней, максимум 90 дней). Убедитесь, что срок хранения превышает интервал запланированного задания копирования, чтобы избежать потери данных.

Дополнительные сведения об отслеживании изменений в Snowflake см. в официальной документации Snowflake — ALTER TABLE и Управление потоками.

Создайте задачу копирования с использованием Snowflake CDC

Выполните следующие действия, чтобы создать новое задание для копирования данных из Snowflake через CDC в конечный пункт назначения.

  1. Выберите +Создать элемент, щелкните значок "Копировать задание ", назовите задание копирования и нажмите кнопку "Создать".

    Снимок экрана, показывающий, куда перейти на главную страницу Data Factory и создать новое задание на копирование.

  2. Выберите хранилище данных для копирования данных. В этом примере выберите Snowflake.

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

  4. Вы должны иметь четкое представление о том, для каких исходных таблиц включен механизм CDC. Выберите таблицы с включенным CDC для копирования.

    Таблицы с включенной функцией CDC: Снимок экрана, показывающий значок таблицы CDC.

    Таблицы без включения CDC: снимок экрана: значок таблицы cdc отсутствует.

    Снимок экрана: выбор таблиц cdc для задания копирования.

  5. Выберите целевое хранилище. Выберите точку назначения, которая поддерживает операции слияния (merge) или обновления (upsert) CDC для оптимальной репликации CDC.

    Снимок экрана, показывающий, где выбрать целевое хранилище для задания копирования.

  6. Выберите инкрементное копирование, и вы увидите, что инкрементный столбец для каждой таблицы не требуется для отслеживания изменений. Метод update по умолчанию должен иметь значение Merge, и необходимые ключевые столбцы будут соответствовать первичному ключу, определенному в исходном хранилище по умолчанию.

    Замечание

    Задание копирования изначально выполняет полную загрузку данных, а затем выполняет инкрементные копии в последующих запусках через CDC.

    Снимок экрана, где выбрать CDC.

  7. Просмотрите сводку задания, установите параметр запуска на "по расписанию" и выберите "Сохранить и запустить".

    Замечание

    Убедитесь, что срок хранения отслеживания изменений Snowflake превышает интервал между запланированными запусками; В противном случае измененные данные могут быть потеряны, если они не обрабатываются в течение периода хранения.

  8. Задание копирования запускается немедленно. Первый запуск копирует первоначальный полный снэпшот.

  9. Обновите исходные таблицы в Snowflake, вставляя, обновляя или удаляя строки.

  10. Снова запустите задание копирования, чтобы записать и реплицировать все изменения, включая вставку, обновление и удаление строк в место назначения.

Дальнейшие шаги