Управление объемом данных с помощью GX
Объем данных, один из важнейших аспектов качества данных, отображает количество записей или точек данных в заданном наборе данных. Эффективное управление объемом данных имеет решающее значение для поддержания целостности данных, обеспечения производительности системы и получения выверенных выводов. Даже малейшие изменения в объеме данных могут сигнализировать о проблемах на этапах сбора, обработки или хранения информации, что в итоге может привести к искажению результатов анализа или сбоям в работе системы. Управление объемом данных неразрывно связано с другими аспектами качества данных, такими как их полнота и согласованность, и является неотъемлемой частью комплексной стратегии управления качеством данных.
Great Expectations (GX) предлагает своим пользователям мощнейший набор инструментов для мониторинга и проверки объема данных с помощью ожиданий, ориентированных на объем информации. Вы можете автоматически генерировать некоторые из этих ожиданий при добавлении нового актива данных в GX Cloud. Интегрировав ожидания в свои пайплайны, Вы сможете организовать надежные проверки данных, которые обеспечат поддержание ожидаемого объема наборов данных и минимизирует риск потенциальных проблем, связанных с рабочими процессами обработки информации.
В этой статье мы поговорим о том, как использовать GX для эффективного управления и надежной проверки объема данных.
Необходимые условия
Эта статья предполагает владение базовыми компонентами и рабочими процессами GX. 
Предварительный обзор данных
В примерах, приведенных в этой статье, используется образец набора данных о финансовых операциях, взятый из общедоступной таблицы БД Postgres.
|
transfer_type |
sender_acco unt_number |
recipie nt_fullname |
transf er_amount |
transfer_ts |
|---|---|---|---|---|
|
domestic |
244084670977 |
Jaxson Duke |
9143.40 |
2024-05-01 01:12 |
|
domestic |
954005011218 |
Nelson O’Connell |
3285.21 |
2024-05-01 05:08 |
В этом наборе данных отражены ежедневные финансовые операции. Несмотря на то, что в реальном мире каждый день происходит огромное количество операций, их объем все-таки можно более или менее точно спрогнозировать исходя из своего опыта.
Ключевые ожидания объема
GX предоставляет несколько ожиданий, разработанных специально для управления объемом данных. Все они могут быть добавлены непосредственно из пользовательского интерфейса GX Cloud или с помощью библиотеки GX Core Python. Некоторые из них могут также быть автоматически сгенерированы в процессе добавления нового актива данных с помощью GX Cloud.
Expect Table Row Count To Be Between
Делает так, чтобы количество строк в наборе данных находилось сторого в заданном диапазоне.
Пример: Проверка того, что объемы транзакций находятся в пределах ожидаемых границ, предупреждение о всплесках или спадах активности.
gxe.ExpectTableRowCountToBeBetween(min_value=2, max_value=5)
Автоматизация правила
При создании нового актива данных с помощью GX Cloud Вы можете выбрать автоматическую генерацию данного ожидания, который обнаруживает постоянство объема в течение определенного периода времени.
Expect Table Row Count To Equal
Проверяет, чтобы набор данных содержал строго указанное количество записей.
Пример: обработка определенного количества записей (особенно полезно для пакетных операций или выверки данных).
gxe.ExpectTableRowCountToEqual(value=4)
Expect Table Row Count To Equal Other Table
Сравнивает количество строк в текущей таблице с количеством строк в другой таблицей в одной и той же БД.
Пример: Проверка согласованности данных на разных этапах пайплайна или между исходной и целевой системами.
gxe.ExpectTableRowCountToEqualOtherTable(other_table_name="transactions_summary")
Подсказки GX
- Регулярно корректируйте пороговые значения ExpectTableRowCountToBeBetween, ориентируясь на исторические данные и модели роста;
- Используйте ExpectTableRowCountToEqual в сочетании с разбиением данных по времени с целью проверки ежедневного объема информации;
- Используйте ExpectTableRowCountToEqualOtherTable для обеспечения целостности данных на всех этапах пайплайна.
Пример: Проверка ежедневного объема транзакций 
Контекст: В таблицах SQL при создании строки данные зачастую отмечаются временной меткой. В ней могут храниться исторические данные, созданные за длительные промежутки времени, однако организациям обычно требуется подтверждение объема только за определенный период времени (год, месяц, день). Когда данные поступают регулярно, целесообразно иметь возможность отслеживать их объем за последний промежуток времени.
Цель: используя ExpectTableRowCountToBeBetween Expectation и GX Core или GX Cloud, проверьте ежедневный объем данных с помощью пакетной обработки одного актива данных (таблицы Postgres) по столбцу transfer_ts.
GX Core
Выполните следующее:
import great_expectations as gx
import great_expectations.expectations as gxe
import pandas as pd
# Create Data Context.
context = gx.get_context()
# Connect to sample data, create Data Source and Data Asset.
CONNECTION_STRING = "postgresql+psycopg2://try_gx:try_gx@postgres.workshops.greatexpectations.io/gx_learn_data_quality"
data_source = context.data_sources.add_postgres(
"postgres database", connection_string=CONNECTION_STRING
)
data_asset = data_source.add_table_asset(
name="financial transfers table", table_name="volume_financial_transfers"
)
# Add a Batch Definition with partitioning by day.
batch_definition = data_asset.add_batch_definition_daily(
name="daily transfers", column="transfer_ts"
)
# Create an Expectation testing that each batch (day) contains between 1 and 5 rows.
volume_expectation = gxe.ExpectTableRowCountToBeBetween(min_value=1, max_value=5)
# Validate data volume for each day in date range and capture result.
START_DATE = "2024-05-01"
END_DATE = "2024-05-07"
validation_results_by_day = []
for date in list(pd.date_range(start=START_DATE, end=END_DATE).to_pydatetime()):
daily_batch = batch_definition.get_batch(
batch_parameters={"year": date.year, "month": date.month, "day": date.day}
)
result = daily_batch.validate(volume_expectation)
validation_results_by_day.append(
{
"date": date,
"expectation passed": result["success"],
"observed rows": result["result"]["observed_value"],
}
)
pd.DataFrame(validation_results_by_day)
Результат:
|
date |
expecta tion passed |
observed rows |
|---|---|---|
|
2024-05-01 |
True |
4 |
|
2024-05-02 |
True |
5 |
|
2024-05-03 |
True |
5 |
|
2024-05-04 |
True |
5 |
|
2024-05-05 |
True |
5 |
|
2024-05-06 |
False |
6 |
|
2024-05-07 |
True |
5 |
Решение GX: GX позволяет проверять объем данных для года, месяца или дня. Проверка данных может быть определена и запущена с помощью GX Core или GX Cloud.
GX Cloud
Используйте пользовательский интерфейс GX Cloud для того, чтобы выполнить следующие шаги:
- Создайте актив данных Postgres для таблицы volume_financial_transfers, используя следующую строку подключения:
postgresql+psycopg2://try_gx:try_gx@postgres.workshops.greatexpectations.io/gx_learn_data_quality
- Создайте профиль актива данных;
- Добавьте в только что созданный актив данных строку Expect из таблицы Expect, чтобы она находилась между ожиданиями;
- Задайте ожиданию минимальное значение, равное 1 и максимальное значение, равное 5;
- Сохраните ожидание;
- Нажмите кнопку Define batch;
- Для параметра Validate by выберите Day;
- Для столбца Batch установите значение transfer_ts;
- Нажмите кнопку Save;
- Нажмите кнопку Validate и определите, какую именно партию нужно проверить:
- Latest проверяет данные для самой последней партии, найденной в активе данных;
- Custom проверяет данные для предоставленной партии.
- Нажмите кнопку Validate.
- Просмотрите результаты проверки.
Решение GX: GX позволяет проверять объем данных за год, месяц или день. Проверка данных может быть определена и запущена с помощью GX Core или GX Cloud.
Решаемые задачи
Сценарии, приведенные в этом разделе, описывают наиболее распространенные примеры проверок объема данных, а также то, как GX можно применять для выявления и мониторинга любых проблем, связанных с объемом информации.
Согласование объема данных в разных системах 
Контекст: Во многих организациях данные хранятся и обрабатываются сразу в нескольких системах, таких как исходные системы, хранилища данных и базы данных. Обеспечение согласованности данных во всех этих системах имеет решающее значение для составления точных отчетов и принятия верных решений. Так, в банковской среде данные могут храниться на основных банковских платформах, хранилищах данных и БД. Обеспечение согласованности данных в этих системах необходимо для соблюдения нормативных требований и составления точной финансовой отчетности.
Решение GX: Реализация проверок с помощью ExpectTableRowCountToEqualOtherTable для обеспечения согласованности объемов данных между исходной и целевой системами в процессе выверки данных.
Мониторинг объема данных в потоковых конвейерах реального времени 
Контекст: Многие организации обрабатывают большие объемы данных в режиме реального времени для самых различных целей, таких как обнаружение попыток мошенничества, мониторинг систем или онлайн-аналитика. Мониторинг объема данных в потоковых пайплайнах в реальном времени необходим для обеспечения того, чтобы объем информации оставался в допустимых пределах, а также для оперативного обнаружения любых отклонений от нормы. Например, банки очень часто обрабатывают большие объемы данных в режиме реального времени с целью выявления мошеннических действий или для мониторинга рынка, и быстрое обнаружение любых отклонений в объеме операционных данных имеет решающее значение для минимизации потенциальных рисков.
Решение GX: Внедрение проверок с использованием ExpectTableRowCountToBeBetween для мониторинга объема данных в потоковых пайплайнах и оповещения в случае обнаружения каких-либо отклонений от нормы.
Проверка пакетной обработки данных 
Контекст: В системах пакетной обработки данных очень важно убедиться в том, чтобы каждая партия данных содержала ожидаемое количество записей (для обеспечения полной обработки данных). Это используется в самых разных отраслях, например, в сфере розничной торговли, где операции по продаже могут обрабатываться партиями, или в здравоохранении, где истории болезни пациентов обновляются с помощью процессов пакетной обработки. Обеспечение того, чтобы каждая партия содержала строго определенное количество записей, имеет решающее значение для поддержания целостности данных и предотвращения их потери.
Решение GX: Проверка данных с помощью ExpectTableRowCountToEqual для того, чтобы убедиться в том, что каждая обработанная партия данных содержит именно то количество записей, которое нужно.
Самые распространенные ошибки, допускаемые при проверке объема данных
- Пороговые значения: Избегайте использования фиксированных пороговых значений, которые не учитывают естественное развитие или сезонность того или иного явления. Регулярно пересматривайте и корректируйте параметры ExpectTableRowCountToBeBetween;
- Игнорирование перекоса данных: Перекос данных означает неравномерное распределение данных по разделам или узлам распределенной системы. Если не учитывать перекос данных при проверке объема, это может привести к получению недостоверных результатов. Контролируйте объем на уровне разделов и применяйте проверки для обнаружения и устранения любых перекосов данных;
- Игнорирование тенденций: Не упускайте из виду постепенные изменения в объеме данных с течением времени. Внедряйте анализ тенденций наряду с проверками в заданный момент времени. GX можно использовать вместе с инструментами анализа временных рядов для обнаружения и предупреждения о самых неожиданных тенденциях в изменении объема данных;
- Игнорирование детализации проверки: Убедитесь в том, что проверки объема применяются на соответствующем уровне детализации (например, ежедневно или ежечасно) для того, чтобы своевременно выявлять любые проблемы. Например, для анализа социальных сетей может потребоваться ежечасная проверка объема данных, необходимая для того, чтобы быстро обнаружить вирусный контент и отреагировать на него;
- Пренебрежение контекстом: Помните, что изменения объема могут быть вполне закономерными вследствие определенных событий или изменений в системе. По возможности включайте контекстную информацию; GX можно интегрировать с внешними системами для того, чтобы при проверке ожидаемого объема информации учитывать те или иные события или изменения.
Дальнейшие шаги
Проактивное управление объемом данных и их проверка - это ключевой момент в обеспечении качества и надежности данных. Применение стратегий, рассмотренных в этой статье, поможет Вам повысить целостность и достоверность Вашей корпоративной информации.
Управление объемами – это важнейший компонент качества данных, однако это всего лишь один из аспектов комплексной стратегии обеспечения высокого качества данных. Продолжая совершенствовать свою стратегию в данной области, постарайтесь использовать весь спектр возможностей GX для создания надежной, масштабируемой и заслуживающей доверия экосистемы данных.




