Короткий ответ
Сравните общее число строк с числом непустых значений каждого критичного поля. Для мониторинга полезно рассчитывать не только количество, но и долю пропусков.
Как это работает подробнее
Функция COUNT(column) игнорирует NULL, а COUNT(*) учитывает все строки. Их разность показывает число пропусков в столбце.
- Критичные поля. В первую очередь проверяют ключи, даты, суммы и признаки, используемые в фильтрах и соединениях.
- Порог. Для каждого поля задают допустимую долю пропусков и реакцию на её превышение.
Пример кода
check_nulls.sql
SELECT
COUNT(*) AS total_rows,
COUNT(*) - COUNT(customer_id) AS missing_customer_id,
COUNT(*) - COUNT(amount) AS missing_amount,
1.0 * (COUNT(*) - COUNT(amount)) / NULLIF(COUNT(*), 0) AS missing_amount_rate
FROM orders;Что использовать на практике
- Сохраняйте результаты проверок по датам, чтобы замечать ухудшение полноты.
- После обнаружения пропусков изучите выборку строк и определите правило обработки вместе с владельцем данных.
Подводные камни
- Пустая строка. Значение
''не являетсяNULLи требует отдельной проверки. - Безусловное заполнение. Подстановка нуля или значения по умолчанию может исказить метрику.