Рубрики
Без рубрики

Представляем доктор Свен: проверку здоровья данных с открытым исходным кодом

Краткий посмотрите, как использовать Dr. Sven, чтобы проверить, что ваши данные здоровы, в соответствии с бизнес-правилами, которые вы определяете. Помечено без серверу, Python, база данных.

Я только что создал новый проект на Github, который я хочу поделиться со всеми вами: https://github.com/mestrak/dr-sven Отказ

Далее следует краткое описание доктора Свен, адаптированного из проекта README, и демо того, что он может сделать.

DR SVEN – это очень простые проверки здоровья данных, который выполняет проверку ваших данных, чтобы дать указание о том, является ли он в хорошей форме или нет.

Доктор приходит в виде AWS Lambda функции, написанной в Python. Он сканирует таблицу в базе данных AWS Athena на основе набора простых правил данных, определенных вами, чтобы проверить, что данные в хорошей форме. Когда я говорю проще, я имею в виду это – прямо сейчас единственное правило, которое существует, – это чек, который каждый день в данный диапазон времени содержит по меньшей мере указанное количество записей. Конкретные даты или дни могут игнорироваться, чтобы избежать спама.

Доктор Свен практика поцелуй медицину

Нет, Док не нарушает клятву Гиппократа, он просто предписал идеологию, что просто лучше.

Доктор Свен разработан с помощью ситуации типа озера данных, когда данные передаются из одного источника данных в другой репозиторий. Большинство инструментов мониторинга приема данных, которые я видел, ориентирован на то, запущены ли отдельные процессы без ошибки в ожидаемом времени. В некоторых сложных сценариях они также пытаются проверить, что элементы исходных данных соответствуют окончательно обработанным данным, которые могут быть очень трудно сделать.

Представьте себе эту ситуацию …

  • Все приборные панели зеленые 😄
  • Журналы не содержат ошибок 😁
  • все кажется хорошо с миром 🚀

… затем нажисный человек смотрит на данные и говорит

  • «Но от воскресенья нет записей, это не правильно» 😰.

или

  • “Есть что-то странное – похоже, есть дыра в этих данных от 1 месяц назад” 😱.

Этот проект направлен на снижение зависимости от этого человека, обеспечивая наивный, но эффективный способ обнаружить проблемы с данными. Укажите некоторые правила данных, определяющие то, что вы ожидаете увидеть, то пусть наш добрый доктор проверяет, соответствует ли обработанные данные по критериям.

Давайте посмотрим на простой пример использования доктора Свена, используя AWS ATHENA, начастую набор данных. Мы создадим проверку для следующего:

  • Проверка каждые выходные содержит как минимум несколько записей
  • Убедитесь, что каждый день неделя содержит много записей
  • Укажите несколько дат, чтобы игнорировать для каждого из этих правил, потому что мы уже знаем, что есть некоторые исключения для правила

Предварительные условия Если вы хотите играть вместе

  • Инструкции по установке находятся в проекте Readme, и лучше оставить их там, пока я их улучшаю. Здесь я покажу, что когда-то установлена доктор Свен.
  • Мы будем использовать набор данных в руководстве AWS ATHENA: https://docs.aws.aMazon.com/athena/latest/ug/getting-started.html Отказ

Настройка доктора Свен

Каждый набор данных, который вы хотите проверить, должен иметь определенный файл конфигурации. Файл конфигурации может содержать несколько правил, если они предназначены для одного и того же набора данных.

Сначала давайте посмотрим на файл конфигурации (этот пример содержится в проекте на github), то я объясню детали, которые не сразу очевидно.

DataSource.Query

  • Это основа набора данных, который будет проверен
    • Он должен вернуть данные с 2 столбцами: дата и счет, где счет – количество записей в тот день
    • Текст запроса должен содержать ‘{start_date}’ и ‘{End_date}’ который будет заменен доктором Sven на основе указанного вами диапазона даты.
  • Дата должна быть в формате yyyy-mm-dd

Правила

  • Это список правил, которые будут выполняться по данным
  • В настоящее время только [[Правил .min_records]] реализован, что проверяет, что данные содержат необходимое количество записей
  • Игнорирующие даты – это список дат, которые должны быть исключены из правила, обычно потому, что есть веская причина, почему данные не в тот день не соответствуют требованиям правила
  • Игнорирование дней – это список дней, используя имя дня, который должен быть исключен. Например, если каждое воскресенье есть обслуживание системы, так что не будет никаких записей, добавьте «воскресенье» в этот список. Вы также можете использовать упущенные имена «выходные» вместо [«суббота», «воскресенье» и «будний день» вместо [«понедельник», «вторник», …, «пятница»]
  • В этой конфигурации мы исключаем «будние дни», чтобы определить правило только на выходные, а «выходные», чтобы определить правило, только применимый в понедельник – пятница
[general]
title = "Example config for Dr. Sven using AWS Athena getting started dataset"
output_location = "lovely-bucket"
output_region = "eu-west-1"

[datasource]
query = "SELECT date, COUNT(*) as count FROM cloudfront_logs WHERE date BETWEEN date '{start_date}' AND date '{end_date}' GROUP BY date"
database = "mydatabase"
start_date = 2014-07-01
end_date = 2014-08-08

[rules]
  [[rules.min_records]]
  name = "Weekends must have a few records"
  ignore_dates = [2014-07-12, 2014-07-13]
  ignore_days = ["Weekdays"]
  min_records = 10
  explanation = "The logs should always have some activity at weekends, just not as much as in the week"

  [[rules.min_records]]
  name = "Weekdays must have many records"
  ignore_dates = [2014-07-06, 2014-07-07, 2014-07-06, 2014-07-25]
  ignore_days = ["Weekends"]
  min_records = 100
  explanation = "There will always be a lot of log activity during the week unless there is some downtime"

Бег доктора Свен

Теперь мы запустим нашу лямбду Dr-Sven с этим событием CloudWatch (замена имя ведра с ведром, которое вы поместите указанный файл конфигурации).

 {
  "s3": {
    "bucket": {
      "name": "my-bucket"
    },
    "object": {
      "key": "aws-athena-example.toml"
    }
  }
}

Проверка результатов

Доктор Свен выкроет два файла с Timestamp, идентификатор проверки и

  • Резюме: .md Файл, содержащий сводку результатов для каждого правила (количество проверенных строк, пройденных, не удалось и игнорировать)
  • Результаты: .csv Файл с строкой в дату для каждого неисправного правила

Набор данных, который мы тестировали, фактически содержит данные только для двух дат. Мы настроили доктор Свена, чтобы проверить данные с 2014-07-01 до 2014-08-08, поэтому мы ожидаем много неудач.

Summary.md

Содержит краткое изложение всех правил, которые были проверены, главное, что сообщает вам, сколько правил не удалось, чтобы вы могли затем проверить в Results.csv.

Выходные должны иметь несколько записей

Журналы всегда должны иметь некоторую активность по выходным, просто не столько, сколько на неделе Всего проверено даты: 39 Игнорировал: 31 Прошло: 1 Не удалось: 7.

Будни должны иметь много записей

В течение недели всегда будет много активности журнала, если не существует некоторое время простоя Всего проверено даты: 39 Игнорировал: 12 Прошло: 1 Не удалось: 26

Results.csv.

Результаты .csv Выходные списки введите все найденные проблемы, наряду с именем правила, взятого из файла конфигурации. Я урезал выход ниже, потому что он был слишком длинным – реальный вывод нашел 32 вопроса, и правильно исключены игнорируемые даты и дни.

0 Ожидается как минимум 10 записей, но найден 0 06/07/2014 Воскресенье Выходные должны иметь несколько записей
0 Ожидается как минимум 10 записей, но найден 0 19/07/2014 Суббота Выходные должны иметь несколько записей
0 Ожидается как минимум 10 записей, но найден 0 20/07/2014 Воскресенье Выходные должны иметь несколько записей
(…)
0 Ожидается, что не менее 100 записей, но нашли 0 04/08/2014 понедельник Будни должны иметь много записей
0 Ожидается, что не менее 100 записей, но нашли 0 06/08/2014 среда Будни должны иметь много записей
0 Ожидается, что не менее 100 записей, но нашли 0 07/08/2014 Четверг Будни должны иметь много записей
0 Ожидается, что не менее 100 записей, но нашли 0 08/08/2014 Пятница Будни должны иметь много записей

Так что у вас есть. Как я уже сказал, доктор Свен – действительно простой способ проверить, что ваши данные подчиняются некоторые основные правила. Я не знаю, это полезно для других Но я очень хочу услышать ваши отзывы!

Оригинал: “https://dev.to/mestrak/introducing-dr-sven-14m9”