Как отслеживать изменения в таблице Dynami c в Redshift? - PullRequest
0 голосов
/ 14 июля 2020

У нас есть поставщик услуг ETL, который загружает данные в наш экземпляр Redshift каждые 3 часа из нашей CRM. Мы хотели бы иметь представление об изменениях, которые вносятся при каждой синхронизации c или, по крайней мере, еженедельно.

Мой первый инстинкт - ежедневно запускать лямбду, которая дублирует все таблицу в архив,

например, CREATE TABLE crm.leads_YYYY_MM_DD FROM (SELECT * FROM crm.leads)

и построение некоторых отчетов на основе различий на уровне полей между таблицами. Мне интересно, есть ли более разумный подход. Похоже, что будет сложно создать историю из, и что огромное количество неизмененных данных может храниться без необходимости. Какая стратегия лучше?

1 Ответ

1 голос
/ 16 июля 2020

Единственный способ избежать «огромного количества неизмененных данных» - это хранить только «старые» данные при изменении «новых» данных. Это усложнит процесс ETL, поскольку он должен эффективно извлекать данные, прежде чем они будут добавлены / обновлены процессом ETL.

Обычно этот процесс выглядит следующим образом: «новые» данные от вашего поставщика услуг

Для каждого уникального идентификатора в «новых» данных скопируйте «старые» данные в таблицу истории вместе с меткой времени Вставьте «новые» 'данные в основную таблицу данных

Это приведет к тому, что таблица истории будет содержать «старые» данные для всего, что было изменено. Однако это не поможет определить «новые» данные. Для этого вам нужно добавить метку времени в основную таблицу, чтобы определить, когда была добавлена ​​строка.

Вы должны начать с размышлений о том, какой результат вы хотите получить от всего этого процесса. Например:

  • Подумайте, что вы хотели бы видеть для данных, которые добавлены (новые значения)
  • Подумайте о том, что вы хотели бы видеть для данных что изменено (старые значения + новые значения)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...