Хранилище данных Snowflake - создание идентификатора измерения с буквенно-цифровым символом вместо целого числа

Является ли хорошей идеей генерировать идентификатор измерения с комбинацией буквенно-цифровых символов вместо целого числа в хранилище данных Snowflake? (https://www.snowflake.com/) Например: Допустим, мне нужно построить измерение таблица из исходной таблицы с 3 комбинациями клавиш. Обычно мы строим инкрементный целочисленный суррогатный ключ столбца как идентификатор измерения. Вместо этого лучше создать строковый столбец key1_key2_key3 (объединенные исходные ключи) в качестве суррогатного ключа для генерации идентификатора измерения? Поскольку снежинки являются распределенной базой данных и хорошо работают, я считаю, что это должно быть нормально. Я пытаюсь увидеть какие-нибудь непредвиденные последствия?


person Bino Thomas    schedule 06.03.2019    source источник
comment
Целые числа всегда будут немного быстрее и будут использовать меньше памяти в качестве ключей соединения, поэтому это предпочтительное решение, если вы можете с этим справиться.   -  person Marcin Zukowski    schedule 07.03.2019
comment
Имеет смысл! Спасибо!   -  person Bino Thomas    schedule 07.03.2019


Ответы (2)


Кажется, вы спрашиваете: следует ли использовать суррогатный ключ (монотонно увеличивающееся целое число) или конкатенацию бизнес-ключа в качестве первичного ключа в вашем измерении.

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

person Simon D    schedule 07.03.2019

Я бы создал dimension id как целое число и добавил бы еще один столбец как surrogate key. Таким образом, вы будете следовать стандартам и получите целочисленный ключ, как и все другие таблицы измерений. Если вы думаете, что суррогатный ключ будет иметь смысл и будет использоваться в объединениях / фильтрах, вы можете добавить его.

Я хочу сказать, что если идентификатор измерения будет целым числом в этой конкретной таблице измерений, это предотвратит отклонение от лучших практик.

Эта ссылка объясняет, когда и где имеет смысл использовать суррогатный ключ.

https://www.kimballgroup.com/1998/05/surrogate-keys/ < / а>

person demircioglu    schedule 06.03.2019