Является ли хорошей идеей генерировать идентификатор измерения с комбинацией буквенно-цифровых символов вместо целого числа в хранилище данных Snowflake? (https://www.snowflake.com/) Например: Допустим, мне нужно построить измерение таблица из исходной таблицы с 3 комбинациями клавиш. Обычно мы строим инкрементный целочисленный суррогатный ключ столбца как идентификатор измерения. Вместо этого лучше создать строковый столбец key1_key2_key3 (объединенные исходные ключи) в качестве суррогатного ключа для генерации идентификатора измерения? Поскольку снежинки являются распределенной базой данных и хорошо работают, я считаю, что это должно быть нормально. Я пытаюсь увидеть какие-нибудь непредвиденные последствия?
Хранилище данных Snowflake - создание идентификатора измерения с буквенно-цифровым символом вместо целого числа
Ответы (2)
Кажется, вы спрашиваете: следует ли использовать суррогатный ключ (монотонно увеличивающееся целое число) или конкатенацию бизнес-ключа в качестве первичного ключа в вашем измерении.
Помимо преимуществ хранения и производительности суррогатного ключа, вам также необходимо учитывать основную причину использования суррогатных ключей - медленно меняющиеся размеры. Если вы решите отслеживать изменения в записях измерений в какой-то момент, вы захотите использовать суррогатные ключи в своих измерениях, поскольку конкатенация ваших бизнес-ключей со временем будет дублироваться.
Я бы создал dimension id
как целое число и добавил бы еще один столбец как surrogate key
. Таким образом, вы будете следовать стандартам и получите целочисленный ключ, как и все другие таблицы измерений. Если вы думаете, что суррогатный ключ будет иметь смысл и будет использоваться в объединениях / фильтрах, вы можете добавить его.
Я хочу сказать, что если идентификатор измерения будет целым числом в этой конкретной таблице измерений, это предотвратит отклонение от лучших практик.
Эта ссылка объясняет, когда и где имеет смысл использовать суррогатный ключ.
https://www.kimballgroup.com/1998/05/surrogate-keys/ < / а>