Об этом проекте

dlt (инструмент загрузки данных) — это библиотека Python с открытым исходным кодом, которая автоматизирует извлечение, преобразование и загрузку данных. Она задумана как библиотека, которую вы встраиваете в существующий код Python, а не как управляемая платформа. **Источники извлечения** включают REST API (с декларативной пагинацией, фильтрацией и уплощением), SQL-базы данных (с автоматическим отражением таблиц и типов), файлы в облачных хранилищах (S3, GCS, Azure — CSV, JSONL, Parquet) и DataFrame (pandas, Polars, PyArrow с поддержкой Arrow без копирования). **Загрузка** поддерживает более 20 назначений, включая DuckDB, BigQuery, Snowflake, Postgres, Redshift, Databricks, Athena, ClickHouse, MotherDuck, Iceberg, Delta Lake и общие файловые системы. Смена назначения требует только обновления строки `destination`. Ключевые возможности: - **Вывод схемы и типизация**: автоматически выводит схему из исходных данных и сопоставляет типы между назначениями. - **Контракты схемы**: три режима — `evolve` (адаптация схемы), `freeze` (отклонение несоответствий), `discard` (отбрасывание проблемных строк/столбцов). - **Инкрементальная загрузка**: встроенная поддержка загрузки только новых или изменённых записей с использованием курсоров или меток времени. - **Стратегии слияния/обновления**: декларативное слияние на основе первичного ключа через опцию `write_disposition="merge"`. - **Нормализация вложенных данных**: автоматическое уплощение и нормализация вложенных структур. - **Интеграция с Ibis**: загруженные таблицы можно поднять в выражения Ibis для композируемых запросов на Python, которые компилируются в SQL на диалекте назначения. - **Управление секретами**: учётные данные вводятся из `secrets.toml` или переменных окружения. - **Переподключение конвейера**: используйте `dlt.attach()`, чтобы переподключиться к конвейеру по имени и прочитать данные обратно через API `Dataset`, поддерживающий `.df()`, `.arrow()` и `.to_ibis()`. dlt создан с учётом совместимости с LLM и агентами кодирования, предлагая декларативные, читаемые человеком примитивы, подходящие для генерации конвейеров с помощью ИИ. Он поддерживает Python 3.10–3.14. Установка: `pip install dlt` с дополнительными опциями, такими как `[duckdb]`, `[bigquery]`, `[sql_database]` и `[hub]`.