Ivan Begtin
8.09K subscribers
1.64K photos
3 videos
100 files
4.35K 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
Я давно не писал про некоторые базовые принципы работы с данными, хотя регулярно о них задумываюсь в практическом контексте применения концепций и принципов инженерии данных к открытым и общедоступным данным. Например, про data lineage, которое на русский язык коллеги переводят как генеалогию данных. Я буду использовать термин data lineage, как более употребимое.

Так вот интересное тут то что в корпоративном мире с густой аналитикой (когда аналитические команды есть и они сильные, и запрос на аналитику есть), так вот в корпоративном мире data lineage - это понятное явление, если не привычное, то активно обсуждаемое и применяемое. Потому что decision maker'ы часто задают вопросы о том как та или иная цифра вышла и надо иметь ответ о том, а как же это оно есть. А вот в мире общедоступных данных, статистики и, отчасти, науки, с data lineage всё, скажем там, плоховато или очень специфично.

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

В других случаях это сложнее, иногда реально сложно. Ещё сложнее со статистикой, при том что там источники данных указываются практически всегда, но это указание может быть не на первоисточник, а на глобальный источник. Простой пример, какой-нибудь агрегатор данных статистики вроде портала данных ООН (data.un.org) может собирать данные из портала данных Международного валютного фонда (IMF) data.imf.org, а тот из первоисточника, страницы раскрытия данных на сайте резервного банка или статслужбы страны. А кто-то коммерческий может, опять же, собирать данные с портала ООН и выдавать в своём сервисе.
Будем ли он при этом рисовать полноценный data lineage от портала данных ООН до сайта статслужбы ? Вообще-то нет, источником будет указан портал ООН.

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

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

Лично я его ощущаю довольно сильно и проекты и инициативы которые создаются дата инженерами и, условно, идеологами и активистами отличаются очень сильно.

Первые продвинуты технологически и сразу ориентированы на разработчиков (API, структурированное хранилище, преобразование данных в удобные форматы JSON, Parquet и др.), но, часто, забывая про базовые принципы открытости.

Вторые, наоборот, ориентированы на государственную или корпоративную прозрачность, но технологическая реализация всегда оставляет ощущение архаики.

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

Это реализация data lineage, это проектирование по принципу API First, это современные форматы предоставления данных для data science, это _всегда_ наличие bulk download, это концепция в основе что data as a product, а не данные как производный продукт от чего то ещё.

#opendata #data #dataengineering #thoughts
К вопросу о том почему я лично пишу про Polars, DuckDb, а теперь ещё и присматриваюсь к chDb, потому что в моей работе есть частые задачи с очисткой и обработкой данных. В принципе, чем бы я в жизни не занимался, читал лекции, делал презентации, программировал и тд., всегда есть задача чистки данных.

Есть много способов чистить данные с помощью кода, есть хороший инструмент OpenRefine [1] известный многим кто с открытыми данными работает. Но, честно скажу, в плане скорости, но не удобства, к примеру, DuckDB бьёт все рекорды. Главный недостаток - отсутствие удобного UI аналогичного OpenRefine или то что в OpenRefine нельзя, к примеру, заменить его движок на DuckDb.

В остальном это реально очень быстро. И работать с локально с многогигабайтными датасетами и в миллионы и десятки миллионов записей - вполне реально. Для сравнения, OpenRefine у меня едва-едва тянет базу в 100 тысяч записей в 680 MB.

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

В общем-то на базе DuckDB и, скорее всего, chDb можно построить полноценную дата-студию по приведению данных в порядок перед загрузкой в хранилище. Опять же, если иметь полноценный веб интерфейс поверх.

Такие инструменты хорошо встраиваются как ядро более прикладных дата-продуктов.

Ссылки:
[1] https://openrefine.org

#data #datatools #thoughts #duckdb #openrefine
Я регулярно пишу про такое явление как датацентричное мышление "что угодно как таблица" и в более узком звучании "что-угодно как SQL". Причём последнее попадается всё чаще и всё чаще всё то ранее было доступно каким-то другим образом через API или в иной специфической форме доступно как таблицы.

Из последнего, sqlelf, это программная библиотека и утилита превращающая метаданные из исполняемых Linux файлов в базу Sqlite и позволяют проделывать все дальнейшие операции по чтению этих метаданных из SQL таблиц. Удобно для всех кто занимается форенсикой под Unix-like системы.

Из похожего, несколько лет назад я делал утилиту metawarc, индексирует содержание веб-архивов в формате WARC и создаёт локальную Sqlite базу с результатами. Что позволяет сильно ускорить задачи по подсчёту статистики, экспорту файлов из архива (архивы бывают большие и это важна задача) и многое другое. Единственное что я не сделал - это там нет SQL интерфейса, хотя добавить такую команду и примеры это дело пары часов.

Похожий код у меня есть для HTML страниц, он превращает дерево HTML в плоскую таблицу с дополнительным обсчётом ряда параметров. Я его всё подумывал опубликовать и возможно что база в памяти это решение. Возможно, потому сколько я не пытался не удаётся сильно уменьшить размеры таблицы тэгов. Она выходит больше оригинального файла от 7 до 21 раза, это без использования СУБД внутри, только размер pandas Dataframe.

Возвращаясь к "что угодно как SQL", я в феврале прошлого года приводил много примеров такого подхода, когда SQL синтаксис и интерфейс создаются для работы с текстовыми файлами, репозиториями Git, базой контейнеров для Docker и тд.

Чем дольше я об этом думаю, тем более чувствую что такой подход может иметь существенный потенциал для технологических продуктов. Например, если бы сервисы счётчиков посещаемости и иной пользовательской аналитики предоставляли бы не REST API, а сразу доступ к SQL таблицам с твоими данными то это резко упростило бы их интеграцию и использование. Такие внешние сервисы, кстати, есть, но суть в том что SQL интерфейсы доступа не являются сейчас стандартизированными продуктами.

Аналогично для многих других сервисов и продуктов которые сейчас интегрируются через ETL и ELT костыли.

А сама идея "что-угодно как SQL" может развиваться ещё применительно много к чему. К файловой системе, к реестру Windows, к работе с Excel/ODS файлами, к работе с онлайн таблицами (типа Google Sheets), к вебсайтам и ещё много к чему.

#thoughts #data #datatools #sql #everythingisdata
На фоне закрытия доступа к поиску по данным судебных решений я не могу не повториться о том как сейчас устроены открытые данные в России.

1. Их всё ещё много, не всё машиночитаемо, но многое пригодно к сбору.
2. Они всё ещё активно используются в самых разных проектах, в том числе в деловом обороте.
3. Основная причина закрытие - это расследования и публикации на их основе.

Фактически данные начинают закрывать когда какие-либо активисты начинают на их основе создавать хоть как-то заметные медийные продукты. Чем больше вокруг них шума, тем больше вероятность что данные прикроют.

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

Но непубличных медиа материалов не бывает, поэтому этот процесс не закончится. Лично я не готов кого-либо осуждать, я подсказываю многим журналистам ответ на вопрос "почему исчезли эти данные?" потому что Вы о них написали, вот почему! Это не значит что не надо писать, это значит что стоит понимать природу этого явления.

Лично я уже упоминал что практически перестал писать о разного рода интересных датасетах внутри РФ не по той причине что писать не о чем, а по той причине что эти данные закроют. И архив любых датасетов надо делать не после того как начали закрывать, а до и тихо.

К сожалению, не только в этом году, но и в ближайшие годы эта ситуация не поменяется.

Что, безусловно, очень печалит, но непонятно как это можно поменять. Поэтому делать проекты на открытых данных, по прежнему, можно, а вот делать их публично и шумно уже нельзя, не потеряв источники данных.

#opendata #thoughts #data #russia
Не все данные называются наборами данных или базами данных или даже просто данными. Например, научные работы состоящие из данных или включающие данные могут называть datasets и, чаще всего, именно так и называют в репозиториях научных данных или в институциональных репозиториях научных и университетских исследовательских центров.

Однако, современные научные журналы - это, тоже, далеко не только тексты статей, там есть довольно много разных технологизированных тенденций и одна из них это публикация статей с данными. Такие статьи называют не datasets, а data paper, data report, data article и data note. Они включают сам текст статьи и уведомление о доступности данных включающее ссылки на первичные данные или данные полученные в результате работы.

Например, издательство Frontiers размещает data reports в своих онлайн изданиях [1]. Пока немного, всего 597 статей из 512 тысяч, это меньше чем 0.1%, но, тем не менее. Постепенно их число растёт.

В GBIF есть описание о том что такое data paper и примеры изданий их публикующих [2], подсказка , много таких изданий. Например, data paper есть в изданиях издательства Pensoft [3] и ещё немало специализированных журналов для данных вернее для статей с данными.

Есть подборки таких журналов [4] и их несложно найти при желании.

Подобные работы иногда сопровождаются приложенными дата файлами, а чаще ссылками на публикации данных в научных репозиториях. Таких как Dryad, Zenodo, Mendeley и ещё много других.

Для меня лично незакрытым вопросом остаётся воспринимать ли data papers как предмет индексирования поисковой системы по данным. С одной стороны большая часть данных из них доступны в каталогах данных, с другой стороны большая часть - это не все и многие данные в каталоги данных не попадают.

Ссылки:
[1] https://www.frontiersin.org/articles?publication-date=01%2F01%2F2007-06%2F04%2F2024&type=123
[2] https://www.gbif.org/data-papers
[3] https://mycokeys.pensoft.net/browse_journal_articles.php?form_name=filter_articles&sortby=0&journal_id=11&search_in_=0&section_type%5B%5D=134
[4] https://zenodo.org/records/7082126

#openaccess #thoughts #research #data #datasets
Анализируя источники данных по всем буквально странам мира вижу довольно заметную и четкую корреляцию между развитостью страны, числом населения и числом каталогов данных и датасетов.

Причём именно в такой последовательности, вначале уровень развития (доход на душу населения, условно) и только далее уже число населения. К примеру, поэтому сотни тысяч наборов данных и более 200 каталогов данных в Нидерландах и почти ничего нет в Мьянме (Бирме). Собственно по этой причине нет почти никаких внутренних данных по Афганистану, Зимбабве, Туркменистану и ещё много каким странам. Но вот нельзя сказать что есть корреляция с политическим режимом в чистом виде. К примеру, в Китае более чем много данных публикуется.

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

#opendata #datasets #data #thoughts
Размышляя над задачами поиска данных (data discovery) и их доступностью вспоминаю про ключевой принцип отличия открытых данных от общедоступной информации. Статус данных как открытых предполагает осознанность владельцем данных того что он делает. Чтобы опубликовать датасет, ему/ей надо подумать о метаданных, надо выбрать лицензию, надо подготовить данные в машиночитаемом виде и, желательно, убедится что данные разумного качества. Это всё хорошо работает когда такая осознанность у владельца данных есть и работает так себе когда её недостаточно.

Но дело в том что кроме данных публикуемых осознанно есть много чего что публикуется AS IS без размышлений о правах, статусе и машиночитаемости. Иногда это недокументированные API, иногда веб страницы пригодные к скрейпингу, иногда что-то ещё. В любом случае это данные которые по всем формальным критериям, в первую очередь, юридическим относить к открытым данным нельзя.

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

Я довольно давно размышляю о том как можно охватить больше данных за пределами каталогов данных и идей и мыслей довольно много, но за каждым шагом есть свои ограничения и оценка востребованности.
1. Сейчас Dateno индексирует данные работая с ограниченным числом источников каталогизируемых полу-вручную. Если отказаться от этого принципа и подключить индексирование всего что есть через краулинг schema.org Dataset, то число наборов данных можно нарастить на 10-15 миллионов датасетов, одновременно снизится качество метаданных, появится SEO спам и просто мусор. Одна из претензий к Google Dataset Search именно по наличию такого мусора в индексе и сильная заспамленность.
2. Кроме датасетов по schema.org есть огромное число машиночитаемых ресурсов и API доступных через краулинг сайтов. Самые очевидные RSS/ATOM фиды которые к API можно отнести. Менее очевидные, к примеру, эндпоинты ArcGIS серверов которые и так уже активно в Dateno добавлялись , но не как датасеты, а как каталоги таблиц и с ручной проверкой. Тем не менее открытых API немало, но их поиск и доступность ближе к задачам OSINT и инфобеза, а не только data discovery.
3. Многие немашиночитаемые сведения можно делать машиночитаемыми автоматически. Извлекать таблицы из разных языков разметки, преобразовывать документы в таблицы или извлекать таблицы из контента там где они есть. Например, из НПА, из научных статей, из корпоративной отчетности и ещё много чего. Но это тоже много маленьких данных, интересных некоторым исследователям, журналистам, но не так вероятно что интересные data scientist'ам.
4. Тем не менее если оценивать качество поиска по числу наборов данных как основному критерию, то обогнать Google Dataset Search и другие поисковики по данным - это не то реальная, это не такая уж сложная задача. Вызовы в ней скорее в моделировании, как создавать фасеты на разнородных данных, не всегда имеющих геопривязку, например
5. Сложнее задача в создании нового качества доступа к общедоступным данным. Как сделать проиндексированные датасеты удобными? Как облегчить работу аналитиков и иных пользователей? И вот тут концептуальный момент в том где происходит переход от поисковика по метаданным к системе управления данными. К примеру, для статистических индикаторов невелика разница между тем чтобы индексировать их описание (метаданные) и сами значения. По ресурсоёмкости почти одно и то же, а имея копии сотен статистических порталов данных, остаёмся ли мы поисковиком или становимся агрегатором и можно превращаться во что-то вроде Statista ? Неочевидно пока что

#opendata #datasearch #datasets #dateno #thoughts
Помимо данных о маршрутах, о которых я ранее писал [1], есть немало узкоспециализированных источников структурированных данных, не очень то полезных для дата аналитиков и data scientist'ов, но полезных кому то ещё. Например, это данные о 3D моделях, майндмапы и какое-то число других результатов активностей распространяемых в форматах с машиночитаемым экспортом.

Их немало, но применение ограничено и области специфические. Куда интереснее всё становится когда мы переходим от восприятия поиска данных не через призму их обнаружения (discover), а через призму их извлечения и создания (extract). Данные есть и их много внутри чего-то что само по себе данными не является: веб-страниц, PDF файлов, офисных документов и иных документов разметки.

К примеру, бесконечное число таблиц находится в научных статьях и их препринтах, или в публичных отчетах компаний, или в нормативных документах и отчетах госорганов. Иногда (редко) эти таблицы легко извлекаются тэгами в разметке, чаще они представлены в виде изображений. Есть такая очень прикладная задача и даже датасеты по извлечению таких таблиц. У IBM есть датасет FinTabNet [2] с большой коллекцией таблиц извлеченных из отчетов компаний из списка S&P 500. Есть несколько десятков исследователей в мире работающих только над темой автоматического аннотирования подобных таблиц, и есть успехи в этой работе.

Так почему бы не взять один из общедоступных алгоритмов извлечения и не прикрутить к поисковой системе вроде нашего Dateno и не получить сотни миллионов таблиц для индексирования? Вот это уже на 100% вопрос масштаба. Документов в мире значительно больше чем общедоступных данных (за исключением биоинформатики, физики частиц и спутниковых снимков). При этом нужна инфраструктура чтобы хранить первичные документы, обрабатывать их и готовить таблицы. Поисковик превратится из базы метаданных в крупнейшую базу данных, из маршрутизатора на сайты с первоисточниками, в замкнутую на себя экосистему.

Но очень соблазнительно и вполне реалистично. Такой подход - это одна из причин почему я давно говорю о том что превзойти поисковый индекс Google по датасетам несложно, вопрос только в размере ресурсов которые необходимо на это затратить.

И всегда важно помнить что это очень много маленьких датасетов, в то время как для data science, к примеру, нужны хорошо размеченные "большие данные".

Ссылки:
[1] https://t.me/begtin/5616
[2] https://developer.ibm.com/data/fintabnet/

#opendata #data #thoughts #datasets #dateno
Поднакопилось какое-то количество мыслей про доступность/открытость данных и дата инженерию, прежде чем писать по каждой мысли отдельный текст, изложу тезисами:

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

- самое сложное - это производство данных и ещё сложнее производство хороших данных. Создавая Dateno одной из мыслей было хотя бы частично решить задачу нахождения данных индексируя основных производителей. Но это не решает проблему отсутствия данных. Как поощрять их создание? Конкурсы для волонтеров? Datathon'ы ? Вопрос открытый.

- геоданные очень прикольная штука когда они очищены и приведены в удобную форму. Можно, например, довольно быстро сделать геопортал Армении на базе TerriaJS и интегрировать туда данные из нашего портала открытых данных data.opendata.am даже сейчас пара сотен слоёв данных наберётся из открытых источников и результат даже будет вполне симпатичен и открыт. Стоит ли делать его с учётом скорого обновления maparmenia.am (не отовсюду и не всегда доступен, неизвестно чем будет после обновления) ? Стоит ли делать такой портал для других стран?

- особенность доступности данных в России что всё что на сайтах госорганов названо "открытыми данными" таковыми не является, или бесполезно, или не обновлялось от 4 до 8 лет. Создать портал открытых данных без гос-ва не так сложно, сколь сложно его держать актуальным и с тем что его надо обновлять. Перезапуск темы открытых данных в России так чтобы данные были востребованы? Ха! Самое очевидное - машиночитаемые нормативные документы и первичные нормативные документы и тексты для машинного обучения, систематизация научных данных и их агрегация и много-много-много датасетов. Это не дорого, этим некому заниматься внутри гос-ва и не похоже что появится кто-то в ближайшие годы. Но если федералы всё же запустят новую версию data.gov.ru то точно сделаем альтернативу ему, больше и лучше, просто чтобы все знали что они не умеют;)

- веб архивация, цифровая архивация находится в кризисе. Причин много, и они нарастают. Во первых многие страны огораживаются, как РФ от поисковых ботов, во вторых информации производится сильно больше чем раньше, волонтеров и НКО недостаточно, далее контент тяжелеет, далее всё больше контента в соцсетях с авторизацией и пэйволов, инструменты устаревают, соцсети блокируют доступ к контенту, а в некоторых странах нет даже политики сохранения даже ключевого контента.

#opendata #data #thoughts #webarchives #geodata
Чем с больше данных тем больше потребности в их эффективном сжатии. Из любопытных продуктов на эту тему:
- llama-zip - LLM-powered lossless compression tool, как уже понятно использует языковую модель LLAMA для сжатия текстов на английском языке. Работает только с текстами, сжимает как-то совсем неимоверно судя по примерам. Хочется дождаться его внешнего тестирования и сравнений с другими.
- ts_zip архиватор от Fabrice Bellard работающий с помощью встроенной языковой модели RWKV 169M v4 . Автор известен тем что создал NNCP, компрессор и прекомпрессор на основе нейросетей и побеждающий несколько лет в конкурсе Large Text Compression Benchmark

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

1. Если у данных есть предопределённые схемы то самый эффективный способ их отдавать - это Parquet.
2. Если хранение данных вообще ничем не ограничено, то сохранять в JSONL
3. Если данные нужны для аналитики и их хочется сохранять сжатыми, то форматы gz, br, xz, zst, lz4 и bz2 если их обрабатывать в Clickhouse и в формате gz если в DuckDB. Фактически надо использовать сжатие GZip'ом при всех его недостатках.
4. Для холодного хранения можно сжимать чем угодно дающим хорошее сжатие, например xz, bz2 или 7z


#thoughts #compression #data #datatools