0x00 Предисловие
В этой статье будет представлен контент, связанный с медленно меняющимися измерениями в хранилищах данных. Перед прочтением рекомендуется просмотреть точки знаний, связанные с многомерным моделированием.Вы можете обратиться к этой статье:No.12 [Обсуждение хранилища данных] Многомерное моделирование.
Зачем делиться этим странным звучанием? Потому что, с точки зрения автора, пока вы являетесь партнером по хранилищу данных, вы будете в основном сталкиваться в своей работе с контентом, связанным с многомерным моделированием, а когда дело доходит до многомерного моделирования, вам неизбежно придется иметь дело с размерные таблицы. Мы хотим поговорить о точках знаний, связанных с таблицами измерений.
Прежде чем мы начнем, давайте объясним, что такое медленно меняющееся измерение. Автор лично понимает, что медленно изменяющиеся измерения на самом деле относятся к тем полям в таблице измерений, которые будут меняться с течением времени, например к основной информации о пользователе.
Примечание: Медлительность — понятие относительное. Тот факт, что данные растут быстро по сравнению с медленно меняющейся широтой, является таблицей фактов.
0x01 Что такое SCD?
SCD (Медленно меняющиеся размеры), китайский язык обычно переводится как «медленно меняющиеся измерения».
Медленно меняющееся измерение предлагается потому, что в реальном мире свойства измерения не статичны, они будут медленно меняться с течением времени. Это измерение, которое изменяется со временем, обычно называется медленно меняющимся измерением, а проблема работы с информацией об исторических изменениях таблицы измерений называется проблемой работы с медленно меняющимся измерением, а иногда также упоминается как проблема работы с ССД.
0x02 Как бороться с проблемами SCD
В книге "Data Warehouse Toolbox" перечислено всего 5 основных медленно меняющихся типов измерений и 3 смешанных медленно меняющихся типа измерений. Мы разделяем только 4 типа, которые знакомы.
ТИП 0: сохранить исходное значение
Этот тип значения атрибута измерения никогда не меняется, поэтому факты всегда группируются по исходному значению.
Например, исходный кредитный рейтинг клиента, вы можете использовать этот тип.
ТИП 1: переписать
Для первого типа старое значение в строке измерения необходимо перезаписать и заменить текущим значением. Поэтому он всегда отражает самую последнюю ситуацию.
Примечание. Этот метод легко реализовать, но он не сохраняет исторические данные и не может анализировать информацию об исторических изменениях.
ТИП 2: добавить новую строку
Одной из целей системы хранилища данных является правильное представление истории. Когда речь идет о медленно меняющихся размерных свойствах, тип 2 — это метод, который следует использовать в первую очередь для поддержки этой потребности.
Типичным представителем типа 2, собственно, являются часы-молния, здесь акцент на часах-молниях, это действительно очень эффективный инструмент. Чем больше вы его используете, тем больше вы можете открыть для себя его очарование.
Подробности столика на молнии будут рассмотрены в следующей статье.
ТИП 3. Добавьте новые атрибуты.
Хотя Тип 2 способен различать исторические ситуации, он не гарантирует связь новых значений атрибутов с прошлыми историческими фактами, и наоборот.
Здесь можно использовать тип 3.
Примечание. Какой сценарий используется для этого типа? Это более подходит для сценариев, где необходимо нарисовать определенные выводы в соответствии с последовательностью.
Например, предположим, что у нас есть таблица пользователей с полем, которое является псевдонимом пользователя. Теперь мы хотим узнать, какой был последний никнейм этого пользователя.
Есть два пути ответа на этот вопрос:
-
Мы находим последний псевдоним в таблице исторических состояний, но это будет более проблематично и может сканировать много данных.
-
Это то, о чем мы сейчас говорим, добавление поля намного удобнее.
Преимущество этого метода в том, что значения атрибутов текущего и предыдущего изменений можно анализировать одновременно, а недостаток в том, что сохраняется только информация о последнем изменении.
Эта схема может решить многие проблемы в некоторых сценариях, но мы не можем добавлять новые поля для записи состояния истории без ограничений, поэтому при использовании этой схемы будут некоторые компромиссы.
Добро пожаловать в паблик WeChat: