Skip to main content

Качество данных

Качество входных данных напрямую определяет достоверность аналитики. Расчёт OEE, вибродиагностика и предиктивное обслуживание бессмысленны, если данные телеметрии содержат пропуски, задержки или аномалии. Сервис data-quality автоматически оценивает каждый параметр каждой единицы оборудования и записывает результат в BaSyx.

Принцип garbage in -- garbage out

Без контроля качества данных нельзя доверять ни одному показателю. Внедрение data-quality -- обязательный этап перед запуском OEE и PdM.

Три измерения качества

Каждый параметр оборудования оценивается по трём независимым измерениям. Итоговая оценка -- среднее взвешенное.

ИзмерениеОбозначениеВесЧто проверяется
Полнота (Completeness)C0.4Доля полученных значений от ожидаемых за период
Своевременность (Timeliness)T0.3Задержка доставки данных относительно настроенного периода
Непротиворечивость (Consistency)S0.3Отсутствие физически невозможных значений, выбросов, застываний
Score = 0.4 * C + 0.3 * T + 0.3 * S    (0..100)

Обнаруживаемые проблемы

Пропуски данных (Gaps)

Система определяет интервалы, в которых данные не поступали, хотя оборудование было в режиме RUN:

УровеньУсловиеПример (при периоде 1 с)
ДопустимыйДо 3x периода опросаДо 3 секунд
Warning3x--10x периода3--10 секунд
CriticalБолее 10x периода или > 5 минутБолее 10 секунд

Застывшие значения (Stuck)

Параметр не изменяется в течение длительного времени при работающем оборудовании:

  • Анализируется дисперсия за скользящее окно (по умолчанию 5 минут)
  • Если стандартное отклонение < 0.01% от диапазона параметра -- значение считается застывшим
  • Исключение: дискретные параметры (статус, режим) не проверяются на застывание

Выбросы (Outliers)

Значения, выходящие за физически допустимые границы:

  • Границы задаются в субмодели TelemetryConfig (min/max для каждого параметра)
  • Дополнительно: статистический анализ (> 4 sigma от скользящего среднего)
  • Выбросы маркируются флагом quality: "bad" в ClickHouse

Задержки доставки (Latency)

Время между формированием значения на датчике и его записью в BaSyx:

УровеньЗадержкаВлияние
Good< 2 сНорма для MQTT pipeline
Uncertain2--10 сВозможны проблемы с сетью или мостом
Bad> 10 сДанные непригодны для управления в реальном времени

Архитектура сервиса

Сервис data-quality выполняет полный цикл каждые 300 секунд (5 минут):

  1. Discover -- находит все оборудование с субмоделью OperationalData
  2. Fetch -- получает текущие значения из BaSyx и историю из ClickHouse (последние 10 минут)
  3. Analyze -- рассчитывает три измерения для каждого параметра
  4. Score -- вычисляет итоговый балл по оборудованию
  5. Write -- записывает результат в субмодель DataQuality (upsert + addSubmodelRef)
BaSyx: OperationalData ----+
|
BaSyx: TelemetryConfig -----+--> data-quality service --> BaSyx: DataQuality
|
ClickHouse: telemetry_raw --+

Структура субмодели DataQuality

DataQuality/
OverallScore: 87
Completeness: 92
Timeliness: 85
Consistency: 83
LastEvaluation: "2026-03-26T10:00:00Z"
Parameters/
MotorCurrent/
Score: 95
Completeness: 98
Timeliness: 92
Consistency: 95
Issues: []
BearingTemperature_DE/
Score: 62
Completeness: 70
Timeliness: 88
Consistency: 45
Issues: ["stuck_values", "outliers"]

Уровни качества

БаллУровеньЦветРекомендация
90--100ОтличноЗелёныйДанные пригодны для всех видов аналитики
70--89ХорошоЖёлтыйДанные пригодны для OEE, возможны неточности в PdM
50--69УдовлетворительноОранжевыйТребуется диагностика канала передачи данных
0--49НеудовлетворительноКрасныйДанные непригодны для аналитики, необходимо вмешательство

Флаги качества в ClickHouse

Каждая запись в таблице telemetry_raw содержит поле quality:

ФлагКодОписание
good0Значение достоверно
uncertain1Значение получено с задержкой или пропуском
bad2Значение за пределами допуска или застывшее

Флаги устанавливаются сервисом telemetry-writer при записи и обновляются сервисом data-quality при ретроспективном анализе.

Визуализация

Дашборд качества данных отображает:

  • Heatmap по оборудованию -- цветовая матрица (строки = оборудование, столбцы = параметры, цвет = балл)
  • Тренд качества -- график изменения балла за последние 24 часа / 7 дней
  • Список проблем -- таблица активных проблем с фильтрацией по типу и severity
  • Детализация -- при клике на ячейку heatmap показываются подробности по конкретному параметру
Настройка порогов

Пороги определения проблем (допустимый gap, окно stuck-детекции, границы outlier) настраиваются в субмодели TelemetryConfig для каждого параметра индивидуально. Значения по умолчанию задаются в StoragePolicy на уровне проекта.

Интеграция с другими сервисами

ПотребительКак использует данные качества
oeeИсключает интервалы с quality=bad из расчёта производительности
alarmsГенерирует алармы при падении качества ниже порога
diagnostОтмечает спектры, рассчитанные по данным низкого качества
monitorАгрегирует качество данных по проекту в SystemHealth