惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
爱范儿
爱范儿
H
Help Net Security
Last Week in AI
Last Week in AI
The Cloudflare Blog
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
IT之家
IT之家
aimingoo的专栏
aimingoo的专栏
大猫的无限游戏
大猫的无限游戏
Jina AI
Jina AI
Google DeepMind News
Google DeepMind News
B
Blog
C
Check Point Blog
T
Tailwind CSS Blog
云风的 BLOG
云风的 BLOG
D
Docker
Recent Announcements
Recent Announcements
Vercel News
Vercel News
博客园 - 聂微东
阮一峰的网络日志
阮一峰的网络日志
MyScale Blog
MyScale Blog
The GitHub Blog
The GitHub Blog
Stack Overflow Blog
Stack Overflow Blog
雷峰网
雷峰网
人人都是产品经理
人人都是产品经理
月光博客
月光博客
F
Fortinet All Blogs
Blog — PlanetScale
Blog — PlanetScale
B
Blog RSS Feed
The Register - Security
The Register - Security
V
Visual Studio Blog
F
Full Disclosure
Hugging Face - Blog
Hugging Face - Blog
T
Threat Research - Cisco Blogs
Latest news
Latest news
PCI Perspectives
PCI Perspectives
Cisco Talos Blog
Cisco Talos Blog
博客园 - Franky
D
DataBreaches.Net
A
Arctic Wolf
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
G
Google Developers Blog
P
Palo Alto Networks Blog
Engineering at Meta
Engineering at Meta
Microsoft Azure Blog
Microsoft Azure Blog
T
Tenable Blog
L
LINUX DO - 热门话题
Spread Privacy
Spread Privacy

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Почему российский бизнес проигрывает битву за информацию и как это исправить. Часть 2
vasyukovevge · 2026-05-10 · via Все публикации подряд на Хабре

Уровень сложностиСредний

Время на прочтение8 мин

Охват и читатели648

Вступление

Представьте себе классическую ситуацию: финансовый директор смотрит на два отчета по выручке за прошлый год. Один отчет, построенный в старой системе, показывает 150 миллионов рублей, другой — в новой корпоративной CRM — демонстрирует 145 миллионов. Разница в 5 миллионов, а вместе с ней и ощущение, что новая система «врет» и вводит всех в заблуждение. Начинается поиск виноватых, и, как это часто бывает, крайними оказываются ИТ-специалисты, якобы «неправильно настроившие миграцию».

Но проблема гораздо глубже. Дело не в кривых скриптах и не в саботаже данных. Причина кроется в «Иллюзии темпоральности» — коварном и широко распространенном заблуждении, что изменчивостью данных во времени можно пренебречь, и достаточно хранить лишь последнее известное состояние. В то время как реальный бизнес находится в бесконечной динамике: клиенты переезжают, меняют паспортные данные и сегменты лояльности; товары проходят через ребрендинг и смену классификаций; сотрудники переходят из отдела в отдел. Если система фиксирует лишь последний известный срез, прошлое в отчетах неизбежно исказится, что и приводит к тем самым «пропавшим» или нестыкующимся суммам.

Современные методологии управления данными, в частности Slowly Changing Dimensions (SCD) или «Медленно меняющиеся измерения», предлагают элегантный и проверенный способ справиться с этой иллюзией, превратив хаос непрерывных изменений в стройную, аналитически ценную картину.

Типы SCD

Концепция SCD, формализованная гуру в области хранилищ данных Ральфом Кимбаллом, описывает семейство стратегий того, как измерение (то есть любая описательная характеристика — клиент, товар, сотрудник) реагирует на изменение своих атрибутов . Именно здесь аналитик и заказчик должны принять принципиальное архитектурное решение, которое определит судьбу всей последующей аналитики.

  • Тип 0: Фиксированные атрибуты. Некоторые данные, такие как дата рождения или первоначальный год открытия счета, должны быть неприкосновенны и никогда не меняться. Это основа для стабильной идентификации.

  • Тип 1: Перезапись. Самый простой, но и самый разрушительный для истории метод. Новое значение попросту затирает старое. Этот способ подходит только для исправления явных ошибок ввода. Использование его для реальных бизнес-изменений, таких как переезд клиента, — гарантированный путь к той самой проблеме с «исчезнувшими» 5 миллионами из нашего примера, так как вся историческая отчетность будет пересчитана задним числом под новые данные.

  • Тип 2: Добавление новой строки (ключевая стратегия). Это основной рабочий инструмент для ответственного бизнеса. При любом изменении атрибута текущая запись не перезаписывается, а закрывается (ей проставляется дата окончания действия), после чего в таблицу добавляется новая запись с обновленными данными и текущей датой начала действия . Это позволяет точно восстановить состояние данных на любой момент в прошлом.

  • Тип 3: Добавление нового столбца. Этот метод позволяет хранить лишь одно предыдущее значение в отдельной колонке, что дает возможность проводить ограниченное сравнение «было-стало». Однако для полноценного исторического анализа возможностей этого типа недостаточно.

  • Другие типы: Для более сложных сценариев существуют и гибридные подходы. Например, Тип 4 разделяет основную и историческую таблицы для повышения производительности, а Тип 6 сочетает в себе механизмы предыдущих типов (1+2+3), чтобы аналитики могли быстро получать как текущие, так и исторические срезы.

SCD Тип 2 – краеугольный камень аналитики

В российских реалиях, где миграция с западных систем (таких как SAP) породила огромное количество проблем с качеством данных, именно SCD Тип 2 становится краеугольным камнем для построения надежной и достоверной аналитики. Его сила — в способности превратить данные из статичного, и потому лживого, «слепка» в живую, развивающуюся во времени картину.

Анатомия SCD Тип 2: ключевые компоненты

В основе реализации лежит несколько технических столбцов, которые добавляются к обычной таблице с измерениями. Именно они и творят «магию времени».

  • Суррогатный ключ (Surrogate Key): Это новый, искусственный первичный ключ таблицы, генерируемый автоматически (например, с помощью IDENTITY в SQL Server или GENERATED ALWAYS AS IDENTITY в Databricks) для каждой версии измененного объекта. Он абсолютно необходим, так как один и тот же бизнес-объект (клиент) будет представлен в таблице множеством строк, и для связи с таблицами фактов нужен однозначный идентификатор.

  • Бизнес-ключ (Business Key): Это естественный идентификатор объекта из исходной системы (например, customer_id). Он остается неизменным для всех версий записи и используется для связывания истории изменений.

  • Дата начала действия (Valid From / Start Date): Временная метка, указывающая, когда данная версия записи стала актуальной.

  • Дата окончания действия (Valid To / End Date): Временная метка, указывающая, когда данная версия записи перестала быть актуальной. Для текущей, действующей версии это поле может быть пустым (NULL) или содержать специальную дату в далеком будущем (например, 9999-12-31).

  • Признак текущей записи (Is Current): Булев флаг, указывающий, является ли данная строка последней актуальной версией (True/False). Он значительно ускоряет запросы на получение текущего среза данных.

Логика работы: как это выглядит на практике

Рассмотрим компанию «ООО Василек», которая переехала из Казани в Москву. Без SCD ее старые продажи были бы задним числом привязаны к Москве, искажая региональную аналитику. С SCD Тип 2 процесс выглядит иначе:

  1. Закрытие старой записи: Строка с business_key = 12345 и city = Казань обновляется: в поле valid_to проставляется текущая дата, а флаг is_current устанавливается в False.

  2. Вставка новой записи: В таблицу добавляется новая строка с тем же business_key = 12345, но уже с city = Москва. Значение valid_from равно дате переезда, valid_to = '9999-12-31'is_current = True. Ей присваивается новый, уникальный суррогатный ключ.

Концептуальный пример реализации (SQL)

Ниже приведен упрощенный концептуальный пример, который иллюстрирует основной принцип работы SCD Тип 2. В продуктивных средах логика будет сложнее и должна быть обернута в транзакции, но суть остается неизменной.

sql

-- Основная таблица измерений
CREATE TABLE dim_customer (
    customer_sk BIGINT GENERATED ALWAYS AS IDENTITY, -- Суррогатный ключ
    customer_id INT NOT NULL,                       -- Бизнес-ключ
    customer_name VARCHAR(100),
    city VARCHAR(100),
    valid_from TIMESTAMP NOT NULL,
    valid_to TIMESTAMP DEFAULT '9999-12-31',
    is_current BOOLEAN DEFAULT TRUE
);

-- Шаг 1: Закрываем все текущие записи для customer_id = 12345,
-- у которых данные изменились
UPDATE dim_customer
SET valid_to = CURRENT_TIMESTAMP,
    is_current = FALSE
WHERE customer_id = 12345
  AND is_current = TRUE
  AND city <> 'Москва';

-- Шаг 2: Вставляем новую версию записи с обновленным городом
INSERT INTO dim_customer (customer_id, customer_name, city, valid_from, is_current)
VALUES (12345, 'ООО Василек', 'Москва', CURRENT_TIMESTAMP, TRUE);

Типичные проблемы игнорирования темпоральности на реальных проектах

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

  • Проблема 1: Миграция последнего «слепка». Это классика. Когда компания переезжает с западной платформы (например, SAP), в спешке забирают только последний срез мастер-данных, полностью игнорируя историю их изменений. В результате многолетняя аналитика теряет целостность, а бизнес получает систему, неспособную ответить на простой вопрос: «Как выглядел этот справочник год назад?» 

  • Проблема 2: «Холодный» архив vs. «Горячая» аналитика. Часто исторические данные выгружаются в отдельное «холодное» хранилище или архив, доступ к которому есть только у узкого круга технических специалистов. Бизнес-пользователи видят лишь чистую, но «плоскую» систему. Для решения такой задачи, как анализ динамики изменения кредитного рейтинга клиентов за последние три года, требуется полноценный инженерный проект по разбору «холодного» архива, тогда как при использовании SCD Тип 2 это был бы обычный SQL-запрос.

  • Проблема 3: Изменение бизнес-правил задним числом. Это наиболее коварная ошибка, часто возникающая из-за недопонимания между бизнесом и ИТ. Руководитель отдела продаж просит исправить регион у клиента в «мастер-данных», и аналитик применяет Тип 1 (перезапись). Исторические отчеты мгновенно пересчитываются, и данные за прошлые периоды, которые уже были сданы и выверены, внезапно меняются. Это порождает тот самый хаос с 5 миллионами рублей, описанный в начале.

Практические рекомендации для аналитика

Что же конкретно нужно делать системному или бизнес-аналитику, работающему на проекте миграции, чтобы не попасть в эти ловушки? Ответом служит четкая методология анализа бизнес-требований.

Этап 1: Аудит темпоральности

Необходимо составить реестр ключевых бизнес-атрибутов (клиент, продукт, контрагент, сотрудник) и для каждого из них задать бизнесу жесткие, но крайне важные вопросы, которые помогут верно подобрать тип SCD. Шаблон вопросов может выглядеть так:

  • Критично ли нам знать историю изменения этого атрибута? (Например, для расчета бонусов важно знать историю изменения плана продаж менеджера).

  • Должны ли прошлые отчеты оставаться неизменными? (Это почти всегда ответ «Да», если компания готовит любую обязательную отчетность).

  • Какая глубина истории необходима для бизнес-анализа? (Год, три, пять лет? Это сильно влияет на объем хранилища).

Этап 2: Выбор и реализация стратегии

Основываясь на ответах бизнеса, вы сможете аргументированно выбрать правильный подход:

  • Если бизнес говорит: «Нам безразлично, где раньше жил клиент», — вы можете смело использовать Тип 1 для адреса, осознанно экономя ресурсы. Такое решение должно быть задокументировано.

  • Если бизнес говорит: «Нам критично знать сегмент клиента на каждый момент времени», — вы внедряете для этого атрибута Тип 2, апеллируя к потенциальным потерям от некорректной аналитики.

Инструментарий

К счастью, современные инструменты уже далеко ушли от необходимости писать сложные ETL-процедуры вручную. Многие платформы предлагают встроенные или легко конфигурируемые механизмы.

  • dbt (data build tool): Предоставляет механизм snapshots (снимки), который позволяет легко конфигурировать SCD Тип 2. Аналитик с базовыми знаниями SQL может описать логику отслеживания изменений, и dbt возьмет на себя генерацию необходимых скриптов.

  • ETL-инструменты корпоративного уровня (Informatica, Talend): Содержат готовые, проверенные временем компоненты для реализации различных типов SCD, что значительно снижает порог входа и вероятность ошибок .

  • Современные облачные экосистемы: Например, сервисы AWS (Glue, Redshift) или Microsoft Azure/Fabric предоставляют паттерны и лучшие практики для построения SCD-пайплайнов в своих средах .

Заключение

Битва за качество данных не будет выиграна в одиночку. Задача аналитика здесь не просто в технической реализации, а в том, чтобы разрушить «Иллюзию темпоральности» в сознании заказчика. Необходимо показать, что время — это не просто еще один столбец с датой создания записи. Это самостоятельное, фундаментальное измерение, которое пронизывает все данные в организации. Без его осознанного и методологически выверенного управления любая, даже самая современная и дорогая система, останется лишь «дорогой записной книжкой» с неверными цифрами. Только внедрив культуру работы с историей через SCD, бизнес сможет превратить данные из источника постоянных проблем в настоящий стратегический актив.

На следующем шаге мы поговорим о том, почему разговоры о «золотом стандарте» качества данных часто так и остаются разговорами в кабинетах, и как реальные сценарии использования возвращают Data Governance к жизни. Не переключайтесь.

P.S. Практические шаблоны и чек-листы для бизнес- и системных аналитиков я публикую в своем Telegram-канале: https://t.me/vas_yukoff