Ivan Begtin
9.3K subscribers
2.08K photos
3 videos
102 files
4.81K 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 [email protected]
加入频道
Про эксперименты с автоматизированным документированием датасетов, вот живой пример документирования связки DuckDB + LLM. На вход файл в формате Parquet, можно увидеть его содержимое. На выходе таблица с размеченными колонками. Некоторые LLM дают очень хороший результат с описанием колонок на основе их названия с пониманием контекста и расшифровкой полей в зависимости от контекста который LLM тоже понимает.
Осталось дообогатить таблицу семантическим типом данных и добавить генерацию документации. На вход был файл дампа Единого структурированного справочника-каталога лекарственных препаратов (ЕСКЛП), а на выходе его описание.

Осталось понять сделать ли это отдельным инструментом или встроить в ранее созданные утилиты undatum или metacrafter которые тут пересекаются

#datadocumentation #dataengineering #datatools
Полезные ссылки про данные, технологии и не только:
- Perforator [1] профайлер приложений от Яндекса и с использованием eBPF [2]. Полезно для отладки многих сложных и простых нативных приложений и отдельно расписано как профилировать и оптимизировать серверные приложения на Python. Выглядит как очень добротный open source продукт
- GPT Researcher [3] автономный инструмент для исследований с аккуратной простановкой цитат, использует внешние и локальные источники. Интегрирован с OpenAI
- The Illustrated DeepSeek-R1 [4] подробно о DeepSeek в картинках, позволяет легче ухватить суть продукта
- DataLumos [5] проект Университета Мичигана по архивации государственных и социальных данных, построен на базе OpenICPSR [6], данных не очень много, но они адаптированы под исследовательские задачи
- Data Formulator: Create Rich Visualizations with AI [7] полноценный движок для визуализации данных с помощью ИИ. Выпущен исследователями из Microsoft вместе с научной работой, под лицензией MIT. Выглядит как proof-of-concept, не факт что его можно применять в практических задачах сразу и из коробки, но для экспериментов самое оно. И для идей и вдохновения
- Chat2DB [8] открытый код (community edition) и сервис по управлению базами данных с помощью ИИ. Всё самое вкусное вынесли в коммерческие версии, но посмотреть стоит в любом случае.

Ссылки:
[1] https://perforator.tech
[2] https://ebpf.io
[3] https://github.com/assafelovic/gpt-researcher
[4] https://newsletter.languagemodels.co/p/the-illustrated-deepseek-r1
[5] https://www.datalumos.org
[6] https://www.openicpsr.org/openicpsr/
[7] https://github.com/microsoft/data-formulator
[8] https://chat2db.ai

#opensource #datatools #opendata #ai
Ещё один проект по быстрому созданию приложений на основе датасетов Preswald [1]. С открытым кодом, под лицензией Apache 2.0, вместо low code/no-code пропагандируют принцип Code-First Simplicity (минимальный, но необходимый код), а также декларативное программирование через конфигурацию в toml файлах.

Когда и кому такой инструмент зайдёт? Тем кому нужно быстро визуализировать данные в наглядном виде и предоставлять их в таком виде пользователям. В этом смысле продукт похож чем-то на Observable или Datasette [2] .

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

Ссылки:
[1] https://github.com/StructuredLabs/preswald
[2] https://datasette.io

#opensource #datatools
Полезные ссылки про данные, технологии и не только:
- Kreuzberg [1] библиотека для Python по извлечению текста из документов, поддерживает множество форматов, внутри использует Pandoc и Tesseract OCR. Создано как раз для использования в задачах RAG (Retrieval Augmented Generation) с прицелом на локальную обработку данных и минимумом зависимостей. Лицензия MIT
- Validoopsie [2] другая библиотека для Python для валидации данных. Использует библиотеку Narwhals благодаря которой подключается к почти любым видами дата-фреймов. Выглядит полезной альтернативой Great Expectations, лично для меня в валидации данных глобальный нерешённый вопрос в том что тут правильнее, код или декларативное программирования. Иначе говоря, правила проверки должны ли быть отчуждаемыми от языка разработки. Здесь валидация встроена в код, но поверх можно сделать и декларативный движок. Лицензия MIT
- Scripton [3] коммерческое IDE для Python с необычной фичей визуализации данных в реальном времени. Есть только скриншоты, записи экрана и коммерческая версия для macOS. Для тех кто занимается алгоритмической визуализацией может быть удобно, для остальных задач пока нет такой уверенности.
- New horizons for Julia [4] по сути статья о том что язык программирования Julia ещё жив и развивается. Правда медленно, на мой взгляд, но вроде как есть позитивное движение за пределами научных областей. Лично я почти не сталкивался с Julia кроме как на уровне примеров кода, но хорошо если он кому-то нравится и полезен.
- Data-Driven Scrollytelling with Quarto [5] визуализация дата-историй с помощью движка Quarto, итоги конкурса таких визуализаций с большим числом примеров и победителей. Примеры все от команды компании Posit которая этот open-source движок Quarto и разрабатывает. Скажу отдельно что это очень правильно. Если ты делаешь любой движок по визуализации, то просто обязательно надо проводить такие конкурсы.
- The Best Way to Use Text Embeddings Portably is With Parquet and Polars [6] ещё один обзор о том насколько эффективен Parquet в связке с Polars для работы с данными, в данном случае данными карт Magic of the Gathering. Автор тоже задаётся вопросом о том почему Parquet не поддерживается в MS Excel.
- How to Make Superbabies [7] особенно длинный лонгрид о том как генетическими изменениями можно улучшать человека, создавать супер детей или "оптимизированных детей", как ещё пишет автор. Читать и думать об этом надо потому что всё идёт к тому что скоро это станет ещё одной острой социальной и геополитической темой.

Ссылки:
[1] https://github.com/Goldziher/kreuzberg
[2] https://github.com/akmalsoliev/Validoopsie
[3] https://scripton.dev/
[4] https://lwn.net/Articles/1006117/
[5] https://posit.co/blog/closeread-prize-winners/
[6] https://minimaxir.com/2025/02/embeddings-parquet/
[7] https://www.lesswrong.com/posts/DfrSZaf3JC8vJdbZL/how-to-make-superbabies

#opensource #data #datatools #dataviz #genetics #python
Свежий полезный инструмент smallpond [1] от команды DeepSeek AI для тех кто работает с данными большого объёма и с необходимостью их распределения. Под капотом у него DuckDB и 3FS [2], другая разработка от DeepSeek AI в виде распределённой файловой системы с оптимизацией под обучение ИИ.

Ключевое - масштабируемость до петабайтных датасетов. Думаю что полезно для всех датасетов начиная с 1 ТБ и с масштабированием, а для данных объёмом поменьше уже будет избыточно.

Ссылки:
[1] https://github.com/deepseek-ai/smallpond
[2] https://github.com/deepseek-ai/3FS

#opensource #data #datatools
Полезный обзор Smallpond [1] свежего движка для обработки больших наборов/массивных потоков данных от Deepseek.

Внутри там DuckDB и автор копается во внутренностях движка объясняя как это работает.

Из интересного - да, это альтернатива Apache Spark или Daft. В общем-то DuckDB приобретает всё большую и большую популярность, встраивается внутрь самых разных инструментов.
Вот теперь ещё и в распределенные базы данных и в распределённую обработку данных.

Ссылки:
[1] https://mehdio.substack.com/p/duckdb-goes-distributed-deepseeks

#data #datatools #deepseek #dataengineering
Полезные ссылки про данные технологии и не только:
- Graph Databases after 15 Years – Where Are They Headed? [1] автор рассказывает об эволюции графовых баз данных и главный вывод что они стали очень нишевыми и в упадке, кроме очень узких применений.
- Keep Canvases Moving with DuckDB on the Server [2] count.io, сервис онлайн BI внедрили DuckDB для выполнения серверных запросов. Результаты в немедленном сокращении стоимости их выполнения.
- Polars Cloud; the distributed Cloud Architecture to run Polars anywhere [3] команда Polars запустила облачный сервис со своим продуктом, пока в режиме раннего доступа. Обещают масштабирование датафреймов и тд. Главное чтобы их открытый продукт при этом не пострадал или не оказался под какой-нибудь не совсем открытой лицензией.
- What Is a Flat File? [4] обзор текстовых форматов распространения файлов, поверхностный, но полезный для начинающих.
- Mistral OCR [5] переводчик PDF файлов в файлы Markdown от команды создателей Mistral AI. Говорят сами про себя что они лучшие в этом деле, но проверить пока не проверял.
- Aider is AI pair programming in your terminal [6] инструмент для подключения ИИ к написанию кода, умеет подключаться ко множеству моделей включая локальные. В том числе примеры по работе с данными [7]

Ссылки:
[1] https://www.youtube.com/watch?v=X_RFo616M_U
[2] https://count.co/blog/announcing-duckdb-on-the-server
[3] https://pola.rs/posts/polars-cloud-what-we-are-building/
[4] https://evidence.dev/blog/what-is-a-flat-file
[5] https://mistral.ai/news/mistral-ocr
[6] https://aider.chat/
[7] https://aider.chat/examples/census.html

#opensource #ai #data #datatools #rdbms
DuckDB выпустили UI интерфейс к базе данных [1] с открытым кодом (встроено в клиентское приложение DuckDB начиная с версии 1.2.11).

Запустить его можно командой duckdb -ui в командной строке и работать словно с тетрадками Jupyter Notebook или инструментами вроде OpenRefine.

Для тех кто сталкивается с задачами вроде Exploratory data analysis (EDA), когда вручную анализируешь данные, инструмент будет бесценен.

Сам UI сделан через расширение DuckDB компанией MotherDuck и поэтому включает авторизацию в их облачный сервис, что, впрочем, не мешает использовать его только локально.

Исходный код на C++ и JS доступен под лицензией MIT [2], при желании можно форкнуть и создать интерфейс с собственными плюшками, командной работе, авторизацией через другие сервисы и тд. А можно доработать его и сделать полноценную замену OpenRefine, к примеру.

Полезная штука по всем параметрам.

Ссылки:
[1] https://duckdb.org/2025/03/12/duckdb-ui
[2] https://github.com/duckdb/duckdb-ui

#opensource #duckdb #ui #data #datatools
SQLRooms [1] свежий инструмент с открытым кодом в жанре "BI для небогатых". Под капотом DuckDB-WASM, снаружи приложение на React. Позволяет строить разные интерактивные дашборды, с графиками и без, с AI и без. Самое главное что небольшими усилиями. Не no-code, но ближе к low-code.

У них симпатичный пример аналитики через LLM [2] и много других примеров. В живых примерах также интересно посмотреть на Flowmap City [3] и Cosmograph [4].

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

Открытый код и лицензия MIT.

Ссылки:
[1] https://sqlrooms.org
[2] https://sqlrooms-ai.netlify.app/
[3] https://www.flowmap.city/
[4] https://cosmograph.app/

#opensource #duckdb #data #dataviz #datatools
Ещё одна любопытная СУБД для аналитики GreptimeDB [1] на высоких позициях в метриках JSONBench [2] и похоже что хорошо годится для сохранения логов и как JSON хранилище.
Существует в форме открытого кода, коммерческого продукта и облака. Открытый код под лицензией Apache 2.0

Не удалось найти какой движок внутри, похоже какой-то собственный.

Продукт относительно новый, менее 2-х лет, но с венчурным финансированием в 2022 и 2023 годах.

Даже странно что он не так уж популярен.

Ссылки:
[1] https://greptime.com
[2] https://jsonbench.com

#opensource #rdbms #data #datatools
Marimo [1] альтернатива Jupyter Notebook по созданию аналитических и научных тетрадок. Среди многих альтернатив отличается наличием открытого кода под лицензией Apache 2.0. Даёт некоторое число фич которых нет у Jupyter, например, встраивание UI элементов, ячейки с SQL, визуализации и ряд других фич.

Конечно, объективно, сравнивать надо не только с Jupyter, но и с Deepnote, Hex, Google Collab, но те врядли будут доступны с исходным кодом.

Ссылки:
[1] https://marimo.io

#opensource #datascience #data #datatools
Для тех кто пользуется или планирует пользоваться DuckDB я закинул в рассылку подборку ограничений и особенностей применения из личного опыта.

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

#duckdb #rdbms #datatools
Для тех кто работает с CSV файлами, неплохой и даже немного смешной текст A love letter to the CSV format [1] где автор рассуждает и расхваливает преимущества CSV формата для данных и аргументы его неплохи, но... лично мне недостатки не перевешивают. На его 9 пунктов я могу пару десятков пунктов написать о недостатках CSV, но плюсы тоже есть, чего уж тут скрывать. И, правильнее сказать что не один автор, а авторы, создатели утилиты xan, the CSV magician [2] для обработки CSV файлов.

Утилита эта является переписанной и переработой утилиты xsv [3] и позволяет вытворять самое разное с CSV файлами, включая визуализации, параллельную обработку, просмотр с командной строки и ещё многое другое.

Хороший инструмент, у него только один недостаток, он работает только с CSV файлами😂

Для тех кто любит командную строку и CSV формат - незаменимая штука.

Ссылки:
[1] https://github.com/medialab/xan/blob/master/docs/LOVE_LETTER.md
[2] https://github.com/medialab/xan
[3] https://github.com/BurntSushi/xsv

#opensource #data #datatools
Полезные ссылки про данные, технологии и не только:
- DuckDB Roadmap [1] команда DuckDB опубликовала дорожную карту. Много любопытного, обещают шифрование базы данных в будущем, поддержку парсинга XML
- FastOpenAPI [2] библиотека для Python для быстрого создания документации и схемы API по стандарту OpenAPI. Поддерживает Flask, Falcon, Starlette, Sanic и Tornado. Полезно для очень быстрого развертывания API с помощью Python.
- CSVConf [3] пройдёт в сентябре 2025 года в Болонье, Италия. Это конференция больше про сообщество чем про индустрию, там про применение данных в исследованиях и гражданском обществе. Ещё есть время подать заявку на выступление [4]
- Streamlining access to tabular datasets stored in Amazon S3 Tables with DuckDB [5] в блоге Amazon о том как настраивать хранилище файлов для прямого доступа к S3 таблицам через DuckDB.
- Unstructuted [6] open source и SaaS сервис для обработки данных через извлечение их из PDF, HTML, Word и других документов. Интересная бизнес модель, открытый код доступен, а через его же библиотеку и утилиту командной строки можно подключить аккаунт их облачного продукта и преобразовывать данные быстрее с его помощью. Такая бизнес модель аллергии не вызывает, похоже на хороший, годный продукт.

Ссылки:
[1] https://duckdb.org/docs/stable/dev/roadmap.html
[2] https://github.com/mr-fatalyst/fastopenapi
[3] https://csvconf.com/
[4] https://docs.google.com/forms/d/e/1FAIpQLSdoCI37INVkMMI3tcRLJ5dr2Lfrd86TqH_NjvhT02xoSUMYmw/viewform
[5] https://aws.amazon.com/ru/blogs/storage/streamlining-access-to-tabular-datasets-stored-in-amazon-s3-tables-with-duckdb/
[6] https://github.com/Unstructured-IO/unstructured

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

- newsworker - библиотека для Python по автоматическому извлечению новостей из веб страниц. Анализирует структуру веб страницы, кластеризует блоки, идентифицирует элементы блоков, парсит даты и создаёт RSS ленту на основе. Написал это много лет назад и до сих пор использую, но уже не обновляю

- qddate - библиотека для Python для парсинга дат в условно любом формате, которые могут быть написаны на 8 языках, в разных стилях и тд. Особенность в том что работает она очень быстро, не использует регулярные выражения, а вместо этого внутри используется библиотека pyparsing. Плюс куча оптимизаций по тому как парсить даты максимально быстро. До сих пор использую, но код практически не обновлялся

- undatum - утилита командной строки для обработки данных в форматах CSV, JSON, NDJSON, Parquet, BSON и др. Изначально была цель сделать аналог xsv для NDJSON. В целом получилось и я ей пользуюсь до сих пор, но с недавних пор чаще использую DuckDB из-за значительно большей производительности. Возможно утилиту переделаю однажды.

- apibackuper - утилита командной строки для архивации API. Странно звучит, но да, утилита через API выгружает все данные последовательным перебором и сохраняет их в виде датасета JSON Lines/NDJSON. Активно используется внутри Dateno для сбора метаданных и в Ruarxive для архивации

- metacrafter - утилита и библиотека для идентификации семантических типов данных. Полезна для выявления смысловых полей в датасетах: адресов, названий компаний, кодов типа ИНН, ОГРН, КПП и тд., а также для идентификации персональных данных. Делал я её относительно недавно, умеет она работать и с файлами и с базами данных. Тоже используется в Dateno

- docx2csv - утилита извлечения таблиц из файлов docx. Очень простая и были планы перенести этот код в универсальный дата конвертер.

- pyiterable - библиотека для Python для потокового чтения дата файлов таких как BSON, JSON, NDJSON, Parquet, ORC, XLS, XLSX и XML в том числе сжатых Gzip, Bzip2, ZStandard и другими компрессорами. Используется внутри metacrafter и undatum.

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

#opensource #data #datatools
Какое-то время я рассуждал о том как было бы хорошо если бы был инструмент для очистки и подготовки данных вроде OpenRefine, но более производительным движком внутри. Потому что OpenRefine хорошая штука, но с собственным движком на Java по работе с данными в памяти и всеми вытекающими из этого ограничениями на размеры датасетов. По личному опыту датасет в несколько гигабайт он уже тянет с трудом, на "стандартном настольном железе".

И вот вижу первый такой продукт, Coco Alemana [1] настольное приложение для очистки данных с DuckDB в качестве внутреннего движка. Обещают что работает с файлами до 50ГБ и нативную поддержку Parquet. Чем-то похоже на недавно появившийся DuckDB UI, но с акцентами на чистке и обработке данных.

Из дополнительных плюсов - быстрый поиск по данным и UI к базам данных.

Из минусов:
- работает только на Mac OS X, так что проверить лично смогут пока только маководы
- открытого кода нет, скорее это будет коммерческий продукт в будущем

Ссылки:
[1] https://www.cocoalemana.com

#duckdb #data #datatools #dataquality
Я вот всё расхваливаю DuckDB как очень быстрый движок для обработки данных, а он не один такой. Например, ещё есть FireDucks который делает команда из японского NEC и который они активно оптимизируют конкурируя с DuckDB и Polars и в который добавляют поддержку ускорения через GPU.

Плюс разработчики много полезного пишут в своём блоге о том как они работают над оптимизацией обработки запросов [1]

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


P.S. Картинка отсюда [2].

Ссылки:
[1] https://fireducks-dev.github.io/posts/
[2] https://www.linkedin.com/posts/avi-chawla_pandas-is-getting-outdated-and-an-alternative-activity-7312407582340485120-fH_K?utm_source=share&utm_medium=member_desktop&rcm=ACoAAAA_-HABh4I2pH__YZElkrySwr_MWhdKIVs

#data #datatools #opensource
Сугубо техническое. К вопросу про автодокументирование и применение LLM. Я в качестве теста решил обновить инструмент undatum [1] переделав команду analyze для анализа структуры разных видов дата файлов: csv, jsonl, parquet и xml и добавив поддержку не таких машиночитаемых xls, xlsx и даже таблиц из docx файлов.

Но главное было автоматизировать документирование датасетов. Утилита теперь принимает опцию —autodoc при которой список колонок таблиц передаётся в AI Perplexity и полученные описания используются для генерации описания к полям. Соответственно, можно задавать разные языки и получать детальное описание колонки на нужном языке.

Это, конечно, не всё что нужно для автодокументирования датасетов, но некая существенная часть.

И да, в некоем преобразованном виде оно используется в Dateno [2] и есть ещё много других областей применения.

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

Для работы надо ввести ключ для API Perplexity в переменную окружения PERPLEXITY_API_KEY и вызвать команду
undatum analyze —autodoc —language <язык> <название дата файла>

Дата файл может быть сжатым, например, somedata.csv.gz или somedata.jsonl.zst

Ссылки:
[1] https://github.com/datacoon/undatum
[2] https://dateno.io
[3] https://github.com/apicrafter/pyiterable

#opensource #datatools #data
Обнаружил ещё один инструмент по проверке данных validator [1], умеет делать кросс табличные проверки данных и использует схему из спецификации Frictionless Data [2]. Пока малоизвестный, но кто знает. Он выглядит неплохо по способу реализации, но есть проблема с самой спецификацией и о ней отдельно.

Я неоднократно писал про Frictionless Data, это спецификация и набор инструментов созданных в Open Knowledge Foundation для описания и публикации наборов данных. Спецификация много лет развивалась, вокруг неё появился пул инструментов, например, свежий Open Data Editor [3] помогающий готовить датасеты для публикации на дата платформах на базе ПО CKAN.

С этой спецификацией есть лишь одна, но серьёзная проблема. Она полноценно охватывает только плоские табличные файлы. Так чтобы работать со схемой данных, использовать их SDK, тот же Open Data Editor и тд. Это даёт ей применение для некоторых видов данных с которыми работают аналитики и куда хуже с задачами дата инженерными.

Существенная часть рабочих данных с которыми я сталкивался - это не табличные данные. К примеру, в плоские таблицы плохо ложатся данные о госконтрактах или юридических лицах или объектах музейных коллекций. Там естественнее применения JSON и, соответственно, построчного NDJSON.

Для таких данных куда лучше подходят пакеты валидации данных вроде Cerberus [4]. Я использовал её в случае с реестром дата каталогов [5] в Dateno и пока не видел решений лучше.

Ссылки:
[1] https://github.com/ezwelty/validator/
[2] https://specs.frictionlessdata.io
[3] https://opendataeditor.okfn.org
[4] https://docs.python-cerberus.org/
[5] https://github.com/commondataio/dataportals-registry/

#opensource #data #datatools #dataquality
В рубрике как это устроено у них о том как управляют публикацией открытых данных во Франции. Частью французского национального портала открытых данных является schema.data.gouv.fr [1] на котором представлено 73 схемы с описанием структурированных данных. Эти схемы охватывают самые разные области и тематики:
- схема данных о государственных закупках
- схема данных о грантах
- схема данных архивных реестров записей
и ещё много других.

Всего по этим схемам на портале data.gouv.fr опубликовано 3246 наборов данных, чуть более 5% от всего что там размещено.

Особенность портала со схемами в том что все они опубликованы как отдельные репозитории на Github созданными из одного шаблона. А сами схемы представлены, либо по стандарту Frictionless Data - тот самый формат про таблицы о котором я писал и он тут называется TableSchema, либо в формате JSONSchema когда данные не табличные. В общем-то звучит как правильное сочетания применения этих подходов.

А для простоты публикации данных по этим схемам у был создан сервис Validata [2] в котором загружаемые данные можно проверить на соответствие этой схеме.

Ссылки:
[1] https://schema.data.gouv.fr
[2] https://validata.fr/

#opendata #datasets #data #datatools #france