AI-профілювання даних: де якість ламає модель
Типовий збій виглядає так: дані для навчання зібрали із системи продажів, білінгу та маркетингової вигрузки, модель показала рівні метрики на відкладеній вибірці — і в робочому контурі видала безглуздя. Причина майже ніколи не в архітектурі моделі.
Набір прийшов із дублями клієнтів із двох облікових систем, пропусками в полях, за якими розраховується ознака, та аномаліями в записах: від'ємний вік, дата закриття раніше за дату відкриття, тестові акаунти співробітників.
Модель чесно вивчила цей шум. Далі починається найдорожча частина: інженери шукають дефект у коді, аналітики — в ознаках, а керівник напряму втрачає довіру до самого проєкту.
Перенавчання на тих самих даних дає той самий результат, бо корінь — якість даних, а не налаштування моделі.
AI-профілювання даних переносить цю перевірку на початок роботи. Агент проходить по колонках, рахує розподіли, частку пропусків, перетини ключів, шукає аномалії в записах і позначає рядки, які зіпсують навчання.
Правила валідації в Great Expectations або власні перевірки оформлюються як версіонований набір — профіль стає артефактом проєкту, а не разовим скриптом у чиїйсь теці.
Практичний ефект: розбір займає години замість тижнів, дефекти ловляться до навчання, а не після викочування, а суперечка «модель погана чи дані» закривається звітом по колонках.
Нижче розбираємо, як це закривається в проєкті — від інвентаризації джерел до контролю нових надходжень.
Що змінюється в цифрах після оцінки якості
Профілювання проганяє весь масив до навчання: за кожним полем рахується частка пропусків, розподіл значень, дублікати, викиди та порушення форматів, окремо — розбіжності типів між джерелами.
Уже на цьому кроці видно, які ознаки непридатні, і їх відкидають до розмітки, а не після того, як модель видала незрозумілий результат на прийманні.
Ефект вимірюваний у трьох точках. Строк підготовки даних скорочується в рази: ручне звіряння таблиць замінюється звітом по колонках, який перезбирається на кожному запуску.
Частка браку в записах падає з двозначних відсотків до одиниць — масові дефекти на кшталт порожніх категоріальних полів, дублікатів і з'їхалих форматів дат вичищаються пакетно, а не по одному запису.
Третя точка — класи відмов, які зникають зовсім. Розсинхрон типів між джерелами, дублікати однієї сутності під різними ключами, часові зсуви та сміттєві значення, що потрапляли в ознаки, перестають доходити до моделі: їх ловить контроль якості записів на вході.
Правила описуються декларативно, наприклад у Great Expectations, і перевіряються автоматично за кожного завантаження.
Далі профіль фіксується як контракт: нова порція даних порівнюється з еталонним зрізом, відхилення підсвічуються до потрапляння в навчання. Придатність даних перестає бути предметом віри — вона підтверджується набором перевірок, а не відчуттям «ніби все нормально».
Режими розбору: порівняння підходів та обмежень
Вибір режиму — не питання смаку, а наслідок того, де лежать дані й як швидко потрібен вердикт. Пакетна перевірка даних забирає вигрузку цілком і рахує статистику по всьому масиву: картина повна, але час розбору зростає разом з обсягом.
Потокова перевірка даних дивиться на записи в міру надходження — метрики якості з'являються за хвилини, зате ретроспектива залишається поза полем зору.
На практиці схема майже завжди гібридна: потік тримає контроль свіжості та дрейфу схеми, а періодичний повний прохід уточнює розподіли й знаходить рідкісні класи значень, яких потік не встиг помітити.
| Варіант | Коли підходить | Обмеження |
|---|---|---|
| Пакетний за повною вигрузкою | первинна оцінка масиву, аудит перед міграцією або завантаженням у сховище | час розбору зростає з обсягом; картина фіксується на момент вигрузки |
| Пакетний за стратифікованою вибіркою | швидкий вердикт на десятках мільйонів рядків | рідкісні значення та хвостові аномалії можуть не потрапити у вибірку |
| Потоковий на вході конвеєра | потрібен контроль якості в реальному часі та раннє оповіщення про збій схеми | немає ретроспективи, порівняння йде лише з накопиченим вікном |
| Гібрид: потік плюс періодичний повний прохід | бойові конвеєри, де важливі і свіжість, і повнота | складніше в налаштуванні: два контури потрібно узгоджувати за правилами |
Обмеження спільне для всіх режимів: профіль описує статистику, а не сенс поля. Що означає значення і які діапазони припустимі, підтверджує власник даних — без цього кроку розбір залишається набором метрик без висновків.
Як проходить впровадження: етапи інженерної роботи
Впровадження профілювання йде хвилями: спочатку знімаємо факти про джерела, потім фіксуємо правила, і лише після цього вмикаємо контроль у постійному режимі.
Порядок принциповий — правила валідації, написані до аудиту джерел, ловлять не те, що реально ламає дані, і команда швидко перестає їм довіряти.
- Аудит джерел — обходимо системи, довідники та вигрузки: формати, частота оновлення, власник, спосіб потрапляння даних у сховище. На виході карта, де джерело вважається еталонним, а де дані збираються руками.
- Профілювання зрізу — за кожною колонкою рахуємо заповненість, число унікальних значень, довжини, розподіли, формати дат. Це показує фактичну семантику полів, а не заявлену в описі.
- Схема правил валідації — з профілю виростає набір перевірок: обов'язковість, діапазони, референційна цілісність, узгодженість полів між собою. Для кожного правила відразу визначаємо реакцію: зупинка завантаження, карантин запису або позначка.
- Налаштування порогу аномалій — поріг підбираємо на історичних даних. Занадто строгий дає потік хибних спрацювань, занадто м'який пропускає деградацію непоміченою; правило вважається робочим, коли відомо, скільки спрацювань на тиждень воно дає на нормальному потоці.
- Перевірка на контрольній вибірці — проганяємо правила на зрізі з відомими дефектами і звіряємо результат: що впіймали, що пропустили, де шум. Після цього зазвичай переписуються два-три правила.
- Передача регламенту — віддаємо опис правил, порядок розбору спрацювань і зони відповідальності. Далі команда замовника змінює пороги й додає перевірки самостійно.
Що передаємо на руки: конфігурації, схеми, регламенти
Здаємо не звіт із висновками, а робочий комплект, з яким команда замовника продовжує жити без нас. Кожен артефакт версіонований, лежить у спільному сховищі поряд із кодом і розібраний на передачі — новий інженер входить у проєкт за документами, а не за листуванням.
- Схема джерел: перелік систем-постачальників, власники на боці замовника, режим надходження даних, точки відмови та порядок дій за недоступності.
- Документація щодо даних: опис наборів і полів, одиниці вимірювання, припустимі діапазони, історія змін структури та причини цих змін.
- Словник ознак: за кожним полем сенс, тип, походження, правила нормалізації та список синонімів, за якими поле розпізнається у вільному тексті.
- Профіль якості: частка порожніх значень, дублі, викиди, розподіли та розбіжності між джерелами — у вигляді повторюваного звіту, а не разового зрізу.
- Регламент перевірки: набір правил, пороги спрацювання, періодичність прогонів і порядок розбору інциденту із зазначенням відповідальних ролей.
- Конфігурації розбору та нормалізації: правила для дат, адрес, телефонів і текстових полів, винесені в окремі файли з версіями.
- Інструкція із супроводу: як підключити нове джерело, де змінювати пороги, як відкотити правило, якщо воно дає хибні спрацювання.
Плюс каталог показників: які метрики будуються поверх профілю, з яких полів вони збираються і як перевіряється їхня зіставність між періодами.
Передаємо комплект із розбором на живих даних: команда замовника сама проганяє перевірку, змінює поріг і бачить результат. Опишіть задачу — повернемося з оцінкою та планом.
Кейс: оцінка якості сховища замовлень
Замовник — виробник із прямими продажами: замовлення накопичувалися в робочій базі PostgreSQL кілька років, частина історії приїхала вигрузками з попередніх систем.
Звіт із виручки в кожного аналітика виходив своїм — в одного фільтр за статусом замовлення, у другого за датою відвантаження, у третього за датою оплати.
Профілювання сховища знімає ці розбіжності за години: видно, які колонки взагалі можна порівнювати, а де порівняння дає хибну картину.
Що знайшло профілювання
- У 17% замовлень сума позицій не сходилася з підсумком — від дрібних розбіжностей до кількох відсотків.
- 6% номерів замовлень повторювалися: частина — реальні дублі після перенесення історії, частина — різні замовлення від різних юросіб.
- Дати лежали в чотирьох форматах, часові пояси не приведені, тому замовлення «переїжджали» між днями.
- У 23% записів не було ідентифікатора клієнта — пов'язати з карткою покупця їх не можна.
- У 4% рядків траплялися від'ємні кількості — повернення, записані як продажі.
Що змінилося
Частки розбіжностей і дублів звели до часток відсотка, спірні рядки не видаляємо, а позначаємо: історія залишається повною, а звіт із виручки збирається з одного джерела.
Правила перевірки — звіряння позицій, унікальність номера в межах юрособи, єдиний формат дати, обов'язкове посилання на клієнта — вбудували в завантаження даних.
Зведення щодо якості приходить після кожного оновлення, тому помилку розбирають у день надходження, а не в кінці кварталу.
Що робити, якщо дані вже розгорнуті у сховищі?
Розгортати нове сховище не потрібно: профілювання готового сховища читає наявні таблиці лише на читання. Доступ видається окремому обліковому запису без прав на зміну, важкі проходи йдуть на репліці або із семплюванням — AI-профілювання не вимагає вигрузки даних назовні.
Аудит поточного сховища починається зі структурної інвентаризації: які таблиці справді використовуються, де дублюються сутності, чи сходяться ключі, чи немає порушень референційної цілісності.
Потім за кожним стовпцем рахуємо частку порожніх значень, число унікальних, розподіл і розбіжність із бізнес-довідником.
Семантику відновлюємо з імен, коментарів, збережених запитів і готових звітів: вони показують, як аналітики трактують сутності на практиці. Це дає класифікацію — персональні дані, довідники, операційні події — і перетворює розрізнені таблиці на карту предметної області.
На виході — реєстр проблем із пріоритетами: заповненість полів, дотримання форматів, затримка оновлення, дублікати, конкуруючі джерела істини. За ним якість вимірюється регулярно й порівнюється за періодами, а виправлення плануються за впливом на звітність.
Окремий випадок — успадковане сховище без описів: картину збираємо за журналами запитів, скриптами завантаження та логікою звітів. Щоб почати з наявними даними, достатньо доступу на читання та списку пріоритетних вітрин — повернемося з планом перевірок.
Технічні сумніви: питання та відповіді
Заперечення щодо профілювання даних зазвичай упираються в три речі: чи можна довіряти автоматичній розмітці, чи не виходять дані за периметр і чи відтворюється результат за повторного прогону. Нижче — відповіді за кожним пунктом, з оглядкою на те, як це перевіряється під час приймання.
Автоматична розмітка помиляється — як ви це контролюєте?
Профіль будується на статистиці колонок: розподіли, кардинальність, частка порожніх значень, частотні шаблони. Семантичні мітки накладаються поверх як гіпотези з оцінкою впевненості. Мітки нижче узгодженого порогу не йдуть у звіт як факт, а потрапляють у чергу на підтвердження.
Точність рахуємо на контрольній вибірці, розміченій вашими аналітиками, і перераховуємо за кожної зміни правил.
Дані залишаються всередині нашого контуру?
Так. Обробка розгортається на ваших потужностях, звернення до зовнішніх сервісів не потрібне ні для розрахунку міток, ні для зберігання профілю. Назовні віддаємо лише агреговані показники та словник понять, без рядків вихідних даних. Якщо у вас сегментований доступ між підрозділами, профіль будується за кожним сегментом окремо.
Повторний прогон дасть той самий результат?
Профіль — версіонований артефакт. Фіксуємо версію правил і словників, параметри вибірки та порядок обходу джерел. На незмінному зрізі розбіжність між прогонами зводиться до нуля, а за зміни схеми або типу колонки різниця видна у звіті за конкретним полем.
Профілювання не змінить самі дані?
Працюємо лише на читання: права видаються на вибірку, запис не запитуємо. Якщо джерело під навантаженням, обмежуємо паралелізм і обсяг вибірки, а важкі проходи виносимо на позапікові вікна.
Формулювання порогів, список міток і порядок підтвердження фіксуємо письмово до старту — це і є предмет приймання, а не абстрактна «якість розмітки».Обговоримо задачу: як запустити профілювання
Щоб оцінка обсягу робіт спиралася на факти, а не на припущення, на старті достатньо невеликого набору вхідних даних. AI-профілювання даних не вимагає вигружати всю базу цілком: достатньо репрезентативного зрізу за типовий період, за яким видно і структуру, і характер забруднень.
Далі ми розбираємо схему, рахуємо статистику за полями та зіставляємо значення з довідниками — і повертаємося з планом.
Що підготувати до обговорення задачі:
- зріз даних — 2–3 вигрузки як є, разом із пропусками, дублями та «брудними» полями;
- перелік джерел: звідки приходять записи, як часто оновлюються, хто відповідає за систему;
- бізнес-правила та довідники, за якими значення вважається коректним;
- відомі проблемні місця — поля-«смітники», застарілі записи, розбіжності між системами;
- вимоги до приватності: які атрибути не можна показувати, чи потрібне знеособлення перед аналізом;
- очікуваний результат — звіт щодо якості, семантика для каталогу або розмітка для моделей;
- відповідальний з боку замовника, хто підтверджує правила й приймає результат.
Цього вже достатньо, щоб оцінити обсяг робіт і назвати реальний термін старту проєкту. Опишіть задачу — повернемося з оцінкою та планом: що робимо першим кроком, які метрики якості фіксуємо на вході і в якому вигляді віддаємо результат.







