Должен ли я добавить хеш-ключ в промежуточную область или в 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
на спутниках: если хеширование происходит в промежуточной области, дополнительная вставка в хранилище данных не требует дополнительной обработки (что может быстро дорого обойтись, если в таблице много столбцов).
Так что я бы всегда хешил в области подготовки, если это возможно.