BIG_DATA_SYSTEMS_ANALYSIS Telegram 170
NULL_COUNT и NULL_PERCENT для мониторинга качества данных в Snowflake

Я уже много раз упоминала, что от данных в DWH не будет никакого смысла, если мы не сможем им доверять. Что нужно для доверия? Регулярный мониторинг за качеством данных. Data quality должно пронизывать все этапы жизни данных в хранилище. И об этом говорить мы будем ещё очень много. Но сегодня я хочу рассказать о классных плюшках в Snowflake, которые чуть упрощают нам некоторые проверки.

В Snowflake есть много встроенных встроенных метрик помогающих отслеживать качество данных. И функция SYSTEM$DATA_METRIC_SCAN как раз одна из них. Она упрощает получение метрик качества данных без необходимости писать сложные запросы.

Например, функция NULL_COUNT возвращает строки в таблице, которые содержат значение NULL в определенном столбце. А NULL_PERCENT помогает посчитать % NULL-значений от общего количества строк. Почему не использовать выборку по условию WHERE column_name is NULL? В рамках разовых точечных расчётов, использование этих встроенных метрик не даёт заметного прироста производительности. А вот вывести несколько метрик разом по одной таблице или одним запросом по нескольким быстрее-проще, используя функции.

Какие метрики можно посмотреть в рамках SYSTEM$DATA_METRIC_SCAN?
🟢 NULL_COUNT — количество NULL-значений в поле
🟢 NULL_PERCENT — % NULL-значений от общего количества строк
🟢 BLANK_COUNT — количество пустых строк (для текстовых полей)
🟢 BLANK_PERCENT — % пустых строк от общего количества строк
🟢 DUPLICATE_COUNT — количество дублей поля (не целиком строки)

Рассмотрим пример. Есть таблица с данными о заказах, куда через ELT-процесс регулярно льются свежие данные:

CREATE TABLE orders (
order_id NUMBER,
customer_id NUMBER,
product_id NUMBER,
order_date DATE,
delivery_date DATE,
amount NUMBER,
promo_code STRING
);

-- Для нашего примера заполним её тестовыми данными:
INSERT INTO orders VALUES
(1, 100, 500, '2024-01-01', '2024-01-03', 1500, NULL),
(2, 101, 501, '2024-01-01', NULL, 2000, 'WINTER24'),
(3, 102, 502, '2024-01-02', '2024-01-04', 1800, ''),
(4, NULL, 501, '2024-01-02', NULL, 2000, NULL);

-- Посчитаем какой % NULL-значений в поле customer_id и % пустых строк в promo_code
SELECT
SNOWFLAKE.CORE.NULL_PERCENT(SELECT customer_id
FROM orders) as null_percent_customer_id,
SNOWFLAKE.CORE.BLANK_PERCENT(SELECT promo_code
FROM orders) as blank_percent_promo_cd;

--Выведем все строки с BLANK-значениями в поле promo_code
SELECT *
FROM TABLE(SYSTEM$DATA_METRIC_SCAN(
REF_ENTITY_NAME => 'orders',
METRIC_NAME => 'snowflake.core.blank_count',
ARGUMENT_NAME => 'promo_code'
));


Результат первого запроса покажет:

| null_percent_customer_id | blank_percent_promo_cd |
|--------------------------|------------------------|
| 25 | 33,33 |


А второй выведет строки таблицы с promo_code = '' целиком.

Как всё это применять?
🔘определение пороговых значений для NULL и BLANK в критичных колонках
🔘настройка регулярного мониторинга
🔘создание алертов на основе результатов проверок

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

#snowflake #data_quality
Please open Telegram to view this post
VIEW IN TELEGRAM



tgoop.com/big_data_systems_analysis/170
Create:
Last Update:

NULL_COUNT и NULL_PERCENT для мониторинга качества данных в Snowflake

Я уже много раз упоминала, что от данных в DWH не будет никакого смысла, если мы не сможем им доверять. Что нужно для доверия? Регулярный мониторинг за качеством данных. Data quality должно пронизывать все этапы жизни данных в хранилище. И об этом говорить мы будем ещё очень много. Но сегодня я хочу рассказать о классных плюшках в Snowflake, которые чуть упрощают нам некоторые проверки.

В Snowflake есть много встроенных встроенных метрик помогающих отслеживать качество данных. И функция SYSTEM$DATA_METRIC_SCAN как раз одна из них. Она упрощает получение метрик качества данных без необходимости писать сложные запросы.

Например, функция NULL_COUNT возвращает строки в таблице, которые содержат значение NULL в определенном столбце. А NULL_PERCENT помогает посчитать % NULL-значений от общего количества строк. Почему не использовать выборку по условию WHERE column_name is NULL? В рамках разовых точечных расчётов, использование этих встроенных метрик не даёт заметного прироста производительности. А вот вывести несколько метрик разом по одной таблице или одним запросом по нескольким быстрее-проще, используя функции.

Какие метрики можно посмотреть в рамках SYSTEM$DATA_METRIC_SCAN?
🟢 NULL_COUNT — количество NULL-значений в поле
🟢 NULL_PERCENT — % NULL-значений от общего количества строк
🟢 BLANK_COUNT — количество пустых строк (для текстовых полей)
🟢 BLANK_PERCENT — % пустых строк от общего количества строк
🟢 DUPLICATE_COUNT — количество дублей поля (не целиком строки)

Рассмотрим пример. Есть таблица с данными о заказах, куда через ELT-процесс регулярно льются свежие данные:


CREATE TABLE orders (
order_id NUMBER,
customer_id NUMBER,
product_id NUMBER,
order_date DATE,
delivery_date DATE,
amount NUMBER,
promo_code STRING
);

-- Для нашего примера заполним её тестовыми данными:
INSERT INTO orders VALUES
(1, 100, 500, '2024-01-01', '2024-01-03', 1500, NULL),
(2, 101, 501, '2024-01-01', NULL, 2000, 'WINTER24'),
(3, 102, 502, '2024-01-02', '2024-01-04', 1800, ''),
(4, NULL, 501, '2024-01-02', NULL, 2000, NULL);

-- Посчитаем какой % NULL-значений в поле customer_id и % пустых строк в promo_code
SELECT
SNOWFLAKE.CORE.NULL_PERCENT(SELECT customer_id
FROM orders) as null_percent_customer_id,
SNOWFLAKE.CORE.BLANK_PERCENT(SELECT promo_code
FROM orders) as blank_percent_promo_cd;

--Выведем все строки с BLANK-значениями в поле promo_code
SELECT *
FROM TABLE(SYSTEM$DATA_METRIC_SCAN(
REF_ENTITY_NAME => 'orders',
METRIC_NAME => 'snowflake.core.blank_count',
ARGUMENT_NAME => 'promo_code'
));


Результат первого запроса покажет:

| null_percent_customer_id | blank_percent_promo_cd |
|--------------------------|------------------------|
| 25 | 33,33 |


А второй выведет строки таблицы с promo_code = '' целиком.

Как всё это применять?
🔘определение пороговых значений для NULL и BLANK в критичных колонках
🔘настройка регулярного мониторинга
🔘создание алертов на основе результатов проверок

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

#snowflake #data_quality

BY В мире больших данных


Share with your friend now:
tgoop.com/big_data_systems_analysis/170

View MORE
Open in Telegram


Telegram News

Date: |

Clear Write your hashtags in the language of your target audience. How to build a private or public channel on Telegram? How to Create a Private or Public Channel on Telegram? Content is editable within two days of publishing
from us


Telegram В мире больших данных
FROM American