Должен ли я добавить хеш-ключ в промежуточную область или в ETL из промежуточной области в DWH?

Мы планируем EDW в следующей структуре.

Операционная система -> промежуточная зона -> EDW (хранилище данных)

Согласно закону хранилища данных требуется хеширование бизнес-ключа. Должен ли я реализовать хеширование в области подготовки или в ETL(от области подготовки к EDW).

Как люди обычно имеют дело с добавлением метаданных в области подготовки?

большое спасибо

1 ответ

  • При хешировании в стадии подготовки можно подготовить данные для разделения Hubs, Satellites а также Links, При загрузке данных в промежуточную область вам нужно вычислять хэши только один раз (например, CustomerHashKey, CustomerHashDiff, CustomerContractLinkHashKey). Помимо этих хешей, Sequence число, а Load Date и Source referenceдополнительные метаданные не помещаются в область подготовки. Это дает немного больше ясности относительно того, какие метаданные добавляются при подготовке.

  • На следующем этапе загрузка из промежуточного хранилища данных просто SELECT исходные данные и положить его в нужную структуру (например, HubCustomer, SatCustomer, LinkCustomerContract). Поскольку хэши уже были сгенерированы один раз, при загрузке не требуется никакой дополнительной обработки. Кроме того, есть только одна точка, где генерируются хэши - в процессах подготовки. Все остальные процессы ниже по течению могут использовать их.

Если вы сгенерируете хеш-код из промежуточного хранилища данных, вы можете сгенерировать эти хэши несколько раз (Hub, Satellite (+ Дифф), Link), что может стать проблемой производительности для случаев использования больших данных или компьютеров со слабыми процессорами. Думать о HashDiff на спутниках: если хеширование происходит в промежуточной области, дополнительная вставка в хранилище данных не требует дополнительной обработки (что может быстро дорого обойтись, если в таблице много столбцов).

Так что я бы всегда хешил в области подготовки, если это возможно.

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