Генерация суррогатных ключей в различных хранилищах данных
Почему первичные ключи важны
Мы все знаем одно из самых фундаментальных правил в данных: каждая должна иметь . Первичные к лючи важны по многим причинам:
- Они гарантируют, что в вашей таблице нет дублирующихся строк
- Они помогают устанавливать связи с другими таблицами
- Они позволяют быстро определить таблицы (например, таблица
customers
с PKcustomer_id
имеет одну строку на каждого клиента) - Вы можете тестировать их в dbt, чтобы убедиться, что ваши данные полные и уникальные
Если вам повезет, ваши данные уже будут иметь уникальный первичный ключ. Возможно, это id
, сгенерированный вашими внутренними системами, или вы получаете данные из стороннего источника, который генерирует id для вас.
Однако иногда вы оказываетесь в ситуации, когда у вас нет аккуратного первичного ключа.
Например, возможно, вы объединили своих пользователей с набором функций, которые они используют в вашем продукте, так что ваши данные должны быть уникальными на основе user_id
+ product_id
.
Вопрос в том, как в этой ситуации установить первичный ключ? Познакомьтесь с суррогатным ключом.
Что такое суррогатный ключ?
Суррогатный ключ — это первичный ключ, который, вместо того чтобы существовать в вашем исходном наборе данных, создается на уровне аналитики.
Изучение того, когда использовать суррогатные ключи и как внедрять их в ваш проект, является критическим навыком для любого аналитика.
Знать, когда использовать суррогатный ключ, на самом деле довольно просто: у вас должен быть суррогатный ключ в любой таблице, которая еще не имеет уникального первичного ключа.
Знание как создать суррогатный ключ может оказаться гораздо более сложной задачей. Причина в том, что не всегда легко определить лучший способ реализации суррогатных клю чей. Должны ли вы просто выделять время в своем календаре каждый день, чтобы индивидуально называть каждую из ваших строк?
Оказывается, это относительно хорошо решенная проблема. Чтобы создать суррогатный ключ, вы традиционно следуете этим двум шагам.
- Объедините все поля, необходимые для создания уникальной строки (например,
user_id
иproduct_id
) - Примените функцию для создания криптографического хэша (обычно с использованием функции md5) поверх этих данных, чтобы сгенерировать уникальный id для каждой комбинации уникальных значений
Хотя процесс создания суррогатного ключа относительно хорошо понятен, вы будете шокированы (ШОКИРОВАНЫ, ГОВОРЮ Я), узнав, что синтаксис SQL может иметь тонкие различия в разных диалектах и базах данных.