Выбор между типами медленно изменяющихся измерений

Завершено

В теории схемы типа "звезда" выделяются основные типы постоянно изменяющихся измерений. Наиболее распространенные типы — это типы 1 и 2. На практике таблица измерения может поддерживать сочетание методов отслеживания исторических значений, включая тип 3 и тип 6. Давайте узнаем, в чем заключается различие между этими типами медленно изменяющихся измерений.

Тип 1 SCD

Медленно изменяющееся измерение типа 1 всегда отражает последние значения. При обнаружении изменений в исходных данных данные в таблице измерения перезаписываются. Этот подход к проектированию распространен для столбцов, в которых хранятся дополнительные значения, например адрес электронной почты или номер телефона клиента. При изменении адреса электронной почты клиента или номера телефона таблица измерений обновляет строку клиента новыми значениями. Это как если бы клиент всегда имел эти контактные данные. Ключевое поле, например CustomerID, не будет изменяться, чтобы записи в таблице фактов автоматически связывались с обновленной записью клиента.

An example Type 1 SCD row that updates CompanyName and ModifiedDate.

Тип 2 SCD

Медленно изменяющееся измерение типа 2 поддерживает управление версиями для элементов измерения. В системах исходного кода версии часто не хранятся, поэтому процесс загрузки хранилища данных обнаруживает изменения в таблице измерения и управляет ими. В этом случае таблица измерений должна использовать суррогатный ключ для предоставления уникальной ссылки на версию элемента измерения. Он также содержит столбцы, определяющие допустимость диапазона дат версии (например, StartDate и EndDate) и, возможно, столбец флага (например, IsCurrent), чтобы легко фильтровать по текущим элементам измерения.

Например, Adventure Works назначает продавцов региону продаж. При перемещении продавца необходимо создать новую версию продавца, чтобы исторические факты оставались связанными с бывшим регионом. Для поддержки точного исторического анализа продаж продавцом таблица измерений должна хранить версии продавцов и связанные с ними регионы. Таблица также должна содержать значения дат начала и окончания, чтобы определить допустимость времени. Текущие версии могут определять пустую дату окончания (или 12.31.9999), которая указывает на то, что строка является текущей версией. Таблица также должна определить суррогатный ключ, так как бизнес-ключ (в этом экземпляре идентификатор сотрудника) не будет уникальным.

An example Type 2 SCD row that shows a new record for Region change.

Важно понимать, что если исходные данные не хранят версии, необходимо использовать промежуточную систему (например, хранилище данных) для обнаружения и хранения изменений. Процесс загрузки таблицы должен сохранять существующие данные и обнаруживать изменения. При обнаружении изменения процесс загрузки таблицы должен истекть до текущей версии. Он записывает эти изменения, обновляя EndDate значение и вставляя новую версию со StartDate значением, начиная с предыдущего EndDate значения. Кроме того, связанные факты должны использовать поиск на основе времени для получения значения ключа измерения, относящееся к дате фактов.

Медленно изменяющееся измерение типа 3

Медленно изменяющееся измерение типа 3 поддерживает хранение двух версий элемента измерения в виде отдельных столбцов. Таблица включает столбец для текущего значения элемента, а также столбец для хранения исходного или предыдущего значения элемента. Поэтому в медленно изменяющемся измерении типа 3 дополнительные столбцы используются для отслеживания одного ключевого экземпляра предыдущего состояния измерения. Это отличает тип 3 от типа 2, в котором хранятся дополнительные строки для отслеживания каждого изменения.

Этот тип отслеживания может использоваться для одного или двух столбцов в таблице измерения. Обычно он не используется для нескольких элементов в одной и той же таблице. Часто он используется в сочетании с элементами типа 1 или типа 2.

An example Type 3 SCD row that shows an updated CurrentEmail column and an unchanged OriginalEmail column.

Медленно изменяющееся измерение типа 6

Медленно изменяющееся измерение типа 6 объединяет медленно изменяющиеся измерения типов 1, 2 и 3. При изменении элемента типа 2 создается новая строка с соответствующими датами начала (StartDate) и окончания (EndDate). В медленно изменяющемся измерении типа 6 также хранятся текущие значения во всех версиях сущности, поэтому вы можете легко определить текущее и историческое значение.

В примере с регионом продаж вы разделяете столбец Region на CurrentRegion и HistoricalRegion. Столбец CurrentRegion всегда содержит последнее значение, а столбец HistoricalRegion содержит регион, который был актуален в период с StartDate до EndDate. Поэтому в столбце CurrentRegion для одного и того же продавца каждая запись всегда будет содержать последний указанный регион. А столбец HistoricalRegion работает точно так же, как поле региона в примере медленно изменяющегося измерения типа 2.

An example Type 6 SCD row that shows a new record for Region change with CurrentRegion updated for old and new row.