Ivan Begtin
7.98K subscribers
1.83K photos
3 videos
101 files
4.53K links
I write about Open Data, Data Engineering, Government, Privacy, Digital Preservation and other gov related and tech stuff.

Founder of Dateno https://dateno.io

Telegram @ibegtin
Facebook - https://facebook.com/ibegtin
Secure contacts ivan@begtin.tech
Download Telegram
В рубрике инструментов работы с данными, об инструментах с открытым кодом для работы над качеством данных.

- OpenRefine - инструмент для ручной/автоматизированной очистки наборов данных. Работает преобразуя их в плоские таблицы, поддерживает Excel/CSV/JSON/JSON lines и другие форматы. Позволяет проводить довольно гибкие преобразования по отдельным колонкам. Основан на продукте Google Refine, когда-то переданным компанией в open source.
- Great Expectations - "Большие ожидания", библиотека для языка Python, одна из наиболее активно используемых для автоматической валидации значений в наборах данных, потоках данных, data pipelines и не только.
- Soda-SQL - инструмент с открытым кодом для создания метрик и тестирования данных в SQL базах данных. Поддерживает несколько SQL баз данных и несколько базовых видов/типов полей. Умеет анализировать данные в СУБД и на основе этого рекомендовать автоматизированные тесты.
- Re-data - инструмент подсчёта метрик и проверки качества данных в SQL базах данных. Включает возможность активного мониторинга данных.
- ODD Platform - Open Data Discovery Platform, включает механизмы проверки качества данных, а сама платформа делается на основе ODD Spec спецификации описания метаданных. Здесь Open Data Discovery - это [Open] [Data Discovery], не открытые данные, а открытое обнаружение данных.

Я от себя добавлю что часто инструменты контроля качества данных сильно замедляют работу с данными если они не оптимизированы. К примеру Soda-SQL и Great Expectations, скажем так, имеют большие возможности по их ускорению, потому про по умолчанию заложенные там проверки через регулярные выражения можно сильно оптимизировать. К примеру, решая похожие задачи по классификации данных в DataCrafter'е, могу сказать что там вообще нет регулярных выражений, но и нет жесткой закодированности идентифицирующих типы данных правил. Вместо них некий аналог RegExp'ов работающий многократно быстрее.

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

В частных случаях задача решается. Лично я её решал и решил для сравнений связанных с датами и строками размера до 50 символов довольно грубым способом на 50% состоящим из замены регулярных выражений на их сборный конструктор-аналог и на 50% заменой индекса на код по предпроцессингу входящего потока. Результаты 3 года назад опубликовал в виде библиотеки для Python qddate, там не все наработки, но значительная часть по распознаванию дат в любых форматах. Поэтому можно ли ускорить проверку качества данных и расчёт метрик по миллиардам записей в базах данных? Конечно можно и значительно!

#opendata #metadata #dataquality #datatools #tools
Команда создателей Datahub [1], каталога управления метаданными от LinkedIn, в 2020 году выделились в отдельный стартап Metaphor и вот в ноябре этого года анонсировали Metaphor Platform [2].

По сути это коммерческая SaaS платформа, аналогичная Datahub, используемая для сбора данных о данных (метаданных), но с разделением на 3 типа метаданных:
- технические метаданных - данные из первоисточиков о структуре, качестве, описании таблиц и тд.
- метаданные бизнеса - мэппинг между физическими данными и их производственным рабочим представлением, от сценариев использования
- поведенческие метаданные - привязывание данных к конкретным пользователям и их поведению.

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

В любом случае продукт ещё только в режиме demo, надо будет за ним последить внимательнее.

Ссылки:
[1] https://engineering.linkedin.com/blog/2019/data-hub
[2] https://metaphor.io/blog/metaphor-product-launch

#metadata #datacatalogs
Среди современного стека с данными отдельная тема, о которой я регулярно пишу, это продукты по data discovery, каталоги данных в современном стеке данных. О них было исследование Forrester Wave [1] в середине прошлого года и это такие продукты как Atlan, Alation, Collibra из коммерческих и продукты вроде Amundsen, Datahub и др. из недавно превращённых в открытые продукты с открытым кодом.

Так вот эти продукты переживают сейчас бум развития, инвестиций и пользовательского внимания, потому что уже многие крупные и средние компании накопили команды, наработки, данные и тд. а наведение в этом всём порядка оказывается большой задачей. Вернее задач там много, аналитические, задачи complience и тд.

Полезно посмотреть на два обзора и "каталога каталогов". Один от одного из сотрудников Atlan [2] со списком основных продуктов их конкурентов и кратким описанием каждого.

Другой от CastorDoc [3] с куда более детальным списком и сравнением по областям применения, стоимости и возможностям.

Сейчас это всё довольно сложные платформы, с разными акцентами на управлении метаданными. Лично приглядываюсь к ним потому что многие возможности такой платформы, но в формате открытого каталога, мы реализуем в DataCrafter'е. Например, автоматическая идентификация типов данных есть в Collibra, но пока мало где в других каталогах.

И я, конечно, не могу не обратить внимание насколько технологии Modern Data Stack оторваны от работы с открытыми данными и с исследовательскими данными. Чем больше я изучаю инструментарий технологический, логический и др. тем больше видна разница, между каталогами открытых данных и каталогами корпоративных метаданных. Я бы даже сказал что это разные миры которые практически не пересекаются по форматам данных, способам агрегации данных, способам доступа и так далее.

Ссылки:
[1] https://t.me/begtin/2978
[2] https://www.notion.so/atlanhq/The-Ultimate-Repository-of-Data-Discovery-Solutions-149b0ea2a2ed401d84f2b71681c5a369
[3] https://notion.castordoc.com/catalog-of-catalogs

#datadiscovery #metadata #metadatamanagement #datacatalogs
В рубрике интересное регулярное чтение:
- Every product will be data product [1] - статья о том что любой корпоративный продукт превращается в data product. Мои предыдущие мысли о том что любой госпродукт - это data product очень похожи [2]. Превращение / восприятие любого цифрового продукта как продукта на данных - это очень логично.
- dbd: new ELT tool that you’ll love [3] - автор пишет про свежесозданный инструмент dbd для задач ETL (Extract Transform Load) с примерами загрузки данных. Не то чтобы ETL инструментов было мало, в том числе с открытым кодом, но может пригодится и этот [4]. Инструмент совсем свежий, написан на Python и, похоже, рабочий.
- (P)TL, a new data engineering architecture [5] - автор пытается описать новую архитектуру работы с данными как Pushing Transform Load, где Pushing заменяет Extract и сводится к тому что "давайте вместо извлечения данных будем получать их в структурированном виде из потоковых источников вроде Kafka". Проблема в том что такой подход работает только в случае управляемых источников данных, причём скорее внутренних или очень зрелых внешних способных отдавать поток данных.
- The Modern Metadata Platform: What, Why, and How? [6] - видение современной платформы метаданных от Metaphor, стартапа, как уже понятно, декларирующего создание именно такой платформы. Интересно, по сути, описанием стратегии на то что платформы управления метаданными - это давно уже не только индексация таблиц, а систематизация баз данных, дашбордов, озёр данных, ETL, A/ML и многое другое. Metaphor делает та же команда что создала Datahub в Lyft [7] так что эти рассуждения достойны внимания.
- AutoDoc — a project to document automatically your data warehouse [8] - о том как один из продуктов каталогизации данных автоматически документирует данные из популярных источников. Они отслеживают когда пользователь подключает данные из одного из популярных источников вроде Salesforce, Facebook Ads, Google Ads, HubSpot и ещё нескольких десятков (всего 61) и автоматически добавляют документацию и метаданные которые заранее собраны и привязаны к полям/таблицам из этих источников. Интересный подход, в DataCrafter'е мы используем другой, кучу правил идентификации типов данных на основе их содержания [9], технологически это сложнее.
- The MAD Landscape 2021 — A Data Quality Perspective [10] - обзор стартапов по автоматическому мониторингу инфраструктуры данных и качества данных, data observability и data quality. Обзор интересный про 3 основных способа контроля качества данных: на основе правил, машинного обучения и статистики.

А в качестве завершения, как сформулировано в последней заметке Data is eating the world по аналогии с известной фразой Марка Андерсена Software is eating the world.

Ссылки:
[1] https://medium.com/kyligence/every-product-will-be-a-data-product-19e648f0333
[2] https://t.me/begtin/3423
[3] https://zsvoboda.medium.com/declarative-database-management-89d79e80d0cb
[4] https://github.com/zsvoboda/dbd
[5] https://adoreme.tech/p-tl-a-new-data-engineering-arhitecture-1dee8b7a84c0
[6] https://metaphor.io/blog/the-modern-metadata-platform
[7] https://engineering.linkedin.com/blog/2019/data-hub
[8] https://medium.com/castor-app/docmaster-a-project-to-auto-document-your-data-warehouse-castor-blog-69005927c4c3
[9] https://data.apicrafter.ru/class
[10] https://medium.com/validio/the-mad-landscape-2021-a-data-quality-perspective-e633f71c3eff

#dataquality #data #reading #dataengineering #metadata #dataproducts
Вышла свежая версия OpenMetadata 0.80 [1] инструмента сбора метаданных о таблицах, дашбордах, трубах данных и тд. Аналог Datahub, Amundsen, но с прицелом на открытый общедоступный стандарт описания данных.

В новой версии:
- политики контроля доступа (access control policy)
- ручное добавление происхождения данных (manual linage)
- уведомления о событиях (event notification)
- контроль качество данных (data profiler) на базе Great Expectations

и ещё много чего.

Главный недостаток, на мой взгляд, в том что OpenMetadata не поддерживает NoSQL базы данных такие как MongoDB или Elasticsearch. Например, Datahub умеет данные о MongoDB собирать.

Об этом я как-нибудь отдельно напишу, о том как существующая среда Modern Data Stack тяжело стыкуется с NoSQL продуктами и что с этим делать.

А пока стоит изучить новые возможности OpenMetadata.

Ссылки:
[1] https://blog.open-metadata.org/openmetadata-0-8-0-release-ca09bd2fbf54

#opensource #datatools #metadata
Metadata Guardian [1] [2] свежая утилита для Python, делающая практически то же что и наш движок по идентификации полей и даже теми же самыми способами, только с акцентом на PII (Personally Identifiable Information). Поставляется в виде утилиты командной строки, поддерживает Snowflake, AWS, GCP, MySQL и файлы Avro, Arrow, ORC и Parquet.

Все правила оформлены прям как и у меня в виде YAML файлов [3] с регулярными выражениями. Правила также разделяются на те которые применяются к названиям колонок и те которые применяются

В общем это хорошая утилита, разница между ней и тем что делаю я тоже есть:
1. Правил нашем классификаторе кратно больше. В metadata guardian их около 20, в нашем боте их уже более 150.
2. В нашем классификаторе правила и идентификаторы разделены. Много разных правил могут указывать на один и тот же идентификатор. Например, отдельное правило для почтовых индексов и их написания на английском языке и общее для всех, такое как "postindex" или "postcode" и отдельно для написания на русском "почтовый_индекс" или "pochtoviy_indeks". Это позволяет разделять правила по контексту языка.
3. Это особенность нашего движка, контекстное и языковое разделение правил. Можно задать фильтр и подгрузить любые правила, а не только преднастроенные.
4. В Metadata Guardian используют регулярные выражения, у нас вместо них три типа правил: прямое сравнение, внешние функции и конечные автоматы на PyParsing через которые также можно запускать регулярные выражения.
5. У нас в движке предусмотрена доп. валидация данных после определения. Для этого можно указать внешнюю функцию.
6. Пока наш движок работает с базовым объектом как словарь для Python (python dict), а в качестве входного потока принимает СУБД MongoDB, JSON lines и CSV. А Metadata Guardian нацелен на базы и форматы для облачного применения и для data science.

Причины отличий в том что MG создан для идентификации PII, а наш Data Classifier для задач более общих и, более того, как основа для оценки качества данных и их обогащений. Напомню что наш движок можно потестить вот тут @DataClassifierBot как телеграм бот и скоро будет API.

Тем не менее на Metadata Guardian стоит посмотреть и попробовать, потому что направление движения правильное. К тому же он хоть и меньше может, но более production ready и стыкуется с СУБД.

Ссылки:
[1] https://medium.com/@florian.valeye/metadata-guardian-protect-your-data-by-searching-its-metadata-fe479c24f1b1
[2] https://github.com/fvaleye/metadata-guardian
[3] https://github.com/fvaleye/metadata-guardian/blob/main/python/metadata_guardian/rules/pii_rules.yaml

#metadata #data #datatools #privacy #opensource
В нашем движке по распознаванию типов данных внутри баз данных, таблиц и файлов теперь 195 правил охватывающих геоданные, данные об организациях, о людях, о медицинских препаратах, финансах, госфинансах, справочниках и классификаторах и так далее. Прежде чем запускать бета-тестирование API, я выложил сам движок как открытый код и он доступен на Github как metacrafter [1].

Главные достоинства по сравнению с аналогичными инструментами:
* легко расширяется новыми правилами, правила описываются в файлах в YAML формате
* быстро работает без дополнительных расширений. Вместо регулярных выражений используются конечные автоматы PyParsing
* обычно такие инструменты работают с колоночными данными, а тут наоборот поддержка любых построчных.
* поддерживает MongoDB, любую СУБД через SQL Alchemy, файлы в форматах CSV, JSON, JSON lines, BSON, Parquet
* прицел именно на распознавание идентфикаторов, а не просто идентификацию PII.

Почему открытый код? Потому что он не единственный такой продукт и именно эта его часть с написанием правил может быть полезна многим. А я лично искренне надеюсь что у него будут пользователи которые помогут с его тестированием и доработкой. Главную коммерческую стоимость здесь имеет не код, а знание как устроены данные и сейчас в открытой версии выложено 25 правил, охватывающие базовые виды данных, а также используется 312 правил-шаблонов определения дат и времени.

Движок можно использовать для применения написанных и написания собственных правил.

Обратите внимение что в среди правил есть правила идентификации персональной информации (PII). Сейчас нет команды поиска только и именно PII, но это несложно добавить.

Плюс в него же встроен веб-сервер для запуска движка распознавания в серверном варианте, с API.

Для того чтобы правила и выявляемые идентификаторы были систематизированы, в отдельном репозитории metacrafter-registry [2] доступны данные по всем идентифицируемым объектам. По списку идентификаторов [3] в нём можно понять, то какие правила существуют и какие данные идентифицируются. Этот реестр будет расширяться, дополняться и пополняться.

Наше коммерческое API использует этот же движок, включает все 195 правил идентификации объектов и скоро будет доступно для бета-тестирования.

Ссылки:
[1] https://github.com/apicrafter/metacrafter
[2] https://github.com/apicrafter/metacrafter-registry
[3] https://github.com/apicrafter/metacrafter-registry/blob/main/data/entities.yaml

#metadata #data #opensource
В блоге Datahub, open source продукта каталога корпоративных данных пост про то как составлять бизнес глоссарии [1] в привязке к данным. То что в Datahub называется бизнес глоссарием - это просто другой взгляд на те же semantic types, смысловые категории данных. В Datahub всё решают через самостоятельное составление этого глоссария и через тэгирование данных что тоже вполне себе подход для многих задач.

Я же могу сказать что это та область которая хорошо поддаётся автоматизации и алгоритмизации и я над ней думаю уже наверное с 10 лет, в разных направлениях, но основное - это всегда data undestanding, понимание данных, в том числе когда до этого никакой информации именно об этой базе данных или наборе данных не было.

В каталогах данных вроде Datahub другой подход, в том что есть ручная разметка и ручное документирование и в дополнение к ним кое что может автоматизироваться, выявление некоторых типов персональных данных к примеру.

Вообще же могу сказать что мне лично в этом всём нехватает большого числа разных данных. Всё основное что можно было собрать по российским порталам открытых данных уже или загружено в DataCrafter [2], или лежит большими слепками вроде слепка данных в data.gov.ru или, ещё, с крупных зарубежных порталов данных. В общей сложности около 75 тысяч наборов данных по которым не менее 300 тысяч полей/метаданных доступны. Но это всё общедоступные данные, там почти нет чувствительных персональных данных (кроме некоторых исключений).

Для задач распознавания типов данных всегда нехватает данных предметных областей: финансовой, коммерческой, транспорта, медицины и тд. В общем и целом постоянное ощущение что данных мало сколько бы их не было;)

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

Ссылки:
[1] https://medium.com/datahub-project/creating-a-business-glossary-and-putting-it-to-use-in-datahub-43a088323c12
[2] https://data.apicrafter.ru

#datacatalogs #metadata
Вышла свежая версия Open Metadata 0.9.0 [1], каталога метаданных собирающего сведения о данных и процессах работы с ними.

Из интересного нового:
- много новых коннекторов к базам данных, теперь их 47 [2] поддерживают почти все популярные SQL базы данных
- поддерживают глоссарий терминов (смысловую привязку) к полям с данными
- дискуcсии к данным и отдельным полям
- контроль качества в виде стандартных метрик

В целом продукт быстро нагоняет другие каталоги данных такие как Amundsen или DataHub. Главным недостатком его остаётся отсутствие поддержки NoSQL баз данных таких как MongoDB и ElasticSearch

Ссылки:
[1] https://blog.open-metadata.org/openmetadata-0-9-0-release-8e7b93ab1882?gi=a94cfb8bcb3c
[2] https://blog.open-metadata.org/openmetadata-0-9-0-release-8e7b93ab1882#8f53
[3] https://blog.open-metadata.org/openmetadata-0-9-0-release-8e7b93ab1882#a91f

#data #metadata #opensource #datacatalogs
Я вернулся к написанию технических текстов на английском языке, в этот раз заметка Semantic data types. Systematic approach and types registry [1] в Medium о инструментах о которых я регулярно пишу тут и на других площадках. Это инструмент metacrafter [2] по определению типов данных и наконец-то завершенный реестр Semantic data types [3] в котором собираются смысловые типы данных которые поддерживаются утилитой metacrafter или будут поддерживаться в будущем.

Зачем это нужно я уже писал, это необходимо для задач:
- выявления персональных и чувствительных данных автоматически
- упрощения интеграции данных
- автоматического документирования баз данных
- контроля качества данных, в том числе автоматического

Об этом и другом про данные и про практическую работу с данными я, постепенно, буду писать больше.

Ссылки:
[1] https://medium.com/@ibegtin/semantic-data-types-systematic-approach-and-types-registry-a2c2a60a467b
[2] https://github.com/apicrafter/metacrafter
[3] http://registry.apicrafter.io/

#opendata #data #datatools #opensource #metadata