TGViewer
Аналитика данных / Data Study Аналитика данных / Data Study @data_study · 9.47K subscribers
Post #914 4.48K
Как хранить исторические данные и отличать их от актуальных данных

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

Есть разные варианты хранения и обновления исторических данных, которые описываются типами SCD.
🔎 SCD или Slowly Changing Dimensions - медленно меняющиеся измерения, когда некоторые атрибуты в данных могут меняться со временем, тем самым возникает необходимость добавлять новую версию записи данных.

🔵 SCD type 0
Данные попадают в таблицу только один раз и становятся статичными, нет версионности и изменения данных. Подходит для хранения конкретных справочников, например названия и ISO коды стран

🔵 SCD type 1
Данные перезаписываются новым значением, что также не позволяет хранить версионность. Механизм простой, вместо старых значений в ту же строку перезаписываются новые значения измененных атрибутов, это позволяет не "раздувать" объем таблицы, но не дает доступа к историчности данных.

🔵 SCD type 2
Данный тип заключается в том, что в таблицу добавляется новая запись по измененным данным. Это реализовано с помощью специальных атрибутов, которые позволяют управлять версионностью. Обычно эти атрибуты выглядят так:
- Дата Начала версии
- Дата Конца версии
- Актуальность записи

🔵 SCD type 3
Реализация выглядит таким образом, что в таблице добавляется атрибут со старым значением.
- Историческое значение
- Новое значение
Есть большой недостаток, что невозможно добавлять много новых столбцов для хранения всех версий данных, поэтому история обычно ограничивается только предыдущей версией.

🔵 SCD type 4
Для хранения исторических данных создается отдельная таблица, чтобы хранить предыдущие версии. Основная таблица будет отображать только актуальную запись по данным. Большой плюс, что можем обращаться всегда к таблице основной версии, но при этом нужно создавать и поддерживать отдельную таблицу с историческими данными.

🔵 SCD type 5
Это некий гибрид типов 1 и 4. Если таблица имеет много атрибутов, то ее могут разбить на более мелкие таблицы справочники, которые будут статичны. Но если в этом маленьком справочнике будет перезапись значений по типу 1, то также необходимо будет перезаписать данные в связанной с этим справочнике более большой таблице измерений с помощью перезаписи ключа

🔵 SCD type 6
Гибрид типов 1,2,3. Здесь используется комбинация вышеперечисленных методов, где хранится полная историчность данных с доступом к актуальной версии и всем историческим значениям. Будут добавлены следующие столбцы для управления историчностью:
- Дата Начала версии
- Дата Конца версии
- Актуальность записи
- Историческое значение
- Новое значение

Примеры SCD смотри в картинках

Если пост полезен, ставь реакции и делись им с другими 👨‍💻
  • 👍 29
  • ❤ 2
More from @data_study
  1. Sep 30, 2026С учеником на менторинге проработали задание по созданию дерева метрик - как результат он…
  2. Sep 27, 2026Post #1504
  3. Sep 26, 2026AI ассистентов много не бывает... Установил себе в VS Code еще один плагин SourceCraft, эт…
  4. Sep 24, 2026Поставил себе цель закрывать кружок активности каждый день Листая статистику в приложении…
  5. Sep 23, 2026Давно Маркизы не было в ленте, уверен вы соскучились по шоколадной булке ♥️ P.S. вы ей тож…
  6. Sep 22, 2026Задумываетесь ли вы, что AI-агенты уже сейчас сами принимают решения в физическом мире? И…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →