Как суррогатные ключи являются ручками в улье

Я знаю, что улей не может создавать суррогатные ключи или это довольно сложно. Я хочу понять, как компании внедрили многомерное моделирование на своем складе.

Один из способов, который я могу придумать, - это оставить детали измерений как есть. Затем переместите отличительные измерения в другую таблицу. Но тогда как обрабатываются scd1 и scd2. Я проверил разговоры Кимбалла о клоудере и до сих пор не понимаю, как это работает.

2 ответа

Есть два способа решения этой проблемы в Hive.

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

Второй способ заключается в использовании оконных функций Hive для вычисления суррогата. У меня нет среды Hive, удобной для тестирования этого запроса, но суррогат будет выглядеть примерно так:

(select max(surrogate_key_column) from dimension_table)
+ row_number() over (order by 1)

Насколько мне известно, в версии 3.0 Hive поддерживает суррогатные ключи в таблицах ACID.

https://docs.cloudera.com/HDPDocuments/HDP3/HDP-3.1.4/using-hiveql/content/hive_surrogate_keys.html

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