Duckle — это open-source ETL/ELT платформа, которую ты можешь развернуть на собственных серверах или в облаке.
Проект решает задачу создания и управления данными без зависимости от сторонних облачных провайдеров. Ты можешь создавать визуальные пайплайны в no-code/low-code формате или писать на SQL и Python. Duckle предоставляет 385 компонентов, включая функции для контроля качества данных и реверсивной ETL. Главное отличие от аналогичных решений — отсутствие привязки к поставщику облака и отсутствие оплаты за строки данных, что делает его экономичным в долгосрочной перспективе.
Платформа построена на DuckDB, а запуск осуществляется с помощью команды duckle-runner serve. Обрати внимание, что проект находится на стадии beta и требует настройки на Linux или в Docker. Это идеальный выбор для команд, которые хотят контролировать свои данные.
Потоки данных, которые ты контролируешь. Создавай и разворачивай на своих серверах или в облаке.
Duckle — это открытая платформа ETL для команд, которые хотят использовать свои собственные инфраструктуры для обработки данных. Создавай потоки на графическом интерфейсе, на Python или SQL, а затем загружай тот же файл на свой сервер или в облако. Команда duckle-runner serve запускает поток в фоновом режиме по расписанию, в Docker или на твоем сервере, с веб-консолью, ролями и журналом изменений. Каждый поток представляет собой один файл в git, поэтому он переживает своего создателя. Потоки компилируются в SQL через DuckDB и используют все доступные ядра процессора, так что более мощная инстанс — это более быстрая обработка данных: 96 миллионов строк из Postgres в Parquet за 39,9 секунд. Никакого облакового вендора. Никакой оплаты за обработанные строки. Никакой привязки.
Duckle — это независимый проект с открытым исходным кодом от SlothFlowLabs. Основан на движке DuckDB, но не является частью, не аффилирован и не поддерживается DuckDB Labs или MotherDuck.
---
## Что такое Duckle?
Duckle — это платформа ETL с открытым исходным кодом, которую ты запускаешь на своей инфраструктуре. Просто перетащи источники, преобразования, валидаторы и приемники на графический интерфейс, соедините их и нажми **Запустить**. Duckle компилирует граф в SQL и выполняет его на офлайн-движке с поддержкой реальных предварительных просмотров, где сгенерированный SQL виден на каждом узле, и без скрытого состояния.
Ты создаешь поток на своем ноутбуке и разворачиваешь тот же файл на сервере, где он выполняется по расписанию под веб-консолью с ролями, уведомлениями и журналом аудита. Ничто не переписывается между запуском, и ничего не измеряется.
Вкратце: бесплатная платформа ETL с открытым исходным кодом, которая предоставляет альтернативу хостингам с оплатой за обработанные строки, таким как Fivetran и Airbyte, — один поток для извлечения, преобразования и загрузки, который работает везде и также может запускать dbt внутри одного инструмента.
### Четыре вещи, которые выделяют его:
1. **AI-помощник, поставляемый в комплекте.** Описывая желаемый поток на английском языке, Duckie генерирует JSON и размещает его на графическом интерфейсе. Модель работает там, где работает Duckle — никакие ключи API, никакая телеметрия и никакие запросы к вендору. Укажи свою собственную совместимую конечную точку OpenAI, если ты предпочитаешь, чтобы она не выполнялась локально.
2. **400+ готовых компонентов.** Файлы, лейкхаусы, SQL-базы данных, хранилища, NoSQL, векторные базы данных, брокеры потоков, SaaS REST/GraphQL API, даже FTP и IMAP — всё доступно уже сейчас.
3. **Аудитируемый самодостаточный бинарный файл.** 73 до 110 МБ в зависимости от твоей платформы. Движки устанавливаются при первом запуске. Рабочие пространства — это обычные файлы в выбранной тобой папке. Разница между ними, ответственные за каждый шаг — редкие без скрытых соединений.
4. **Нативная скорость.** Исполнение проходит через DuckDB: векторизованное, колоннарное, локальное. Работа чистой очистки и экспорта, которая буксует в таблице, завершается за миллисекунды.
---
### Установка и запуск
1. **Загрузить** двоичный файл для своей ОС (см. [Download / Install](#download--install)) — или [построить из исходников](#build-from-source).
2. **Запустить.** Первый запуск открывает модальное окно настройки:
- Нажми **Установить** на DuckDB (обязательно, занимает ~30 секунд).
- При желании нажми **Установить** на помощника AI Duckie (~1,1 ГБ, в среднем 5-10 минут при обычном широкополосном интернете).
3. **Выбери папку для рабочего пространства.** Потоки, соединения, переменные контекста и рутинные задачи находятся там в виде обычных файлов.
4. **Построй поток разными способами:**
- **Перетаскивание и провода**: перетащи **CSV источник** и укажи [`samples/orders.csv`](samples/orders.csv), нажми **Автоопределить схему**. Перетащи **Фильтр**, соедините их. Перетащи **Приемник Parquet** с выходным путем. Нажми **Запустить**, смотри, как узлы оживают.
- **Скажи Duckie**: нажми иконку **Искр** (в правом верхнем углу панели), напиши *"прочитать orders.csv, отфильтровать где status = 'paid', записать в paid.parquet"*. Когда Duckie вернёт поток, нажми **Вставить в граф**.
5. **Проверь.** Нажми на любой узел, чтобы увидеть сгенерированный SQL на вкладке **План** и образцы строк на вкладке **Предварительный просмотр**.
---
## Ограничения и совместимость
Duckle — независимый проект, который создан для работы на машине. Это значит, что поток данных создан для локальной и небольшой команды, чтобы быстро работать, а не заменять распределённое хранилище. Duckle не бывает облачным решением и не заменит ни одно из них.
Ограничения включают:
- Duckle не распараллеливает один запрос на кластер, как это делает обширная СУБД.
Если требуется больше ресурсов, включите опцию "pushdown", чтобы запрос выполнялся в системе, где находятся данные, или направьте выход в хранилище, которое масштабируется.
---
## Лицензия
Лицензирован под лицензионными соглашениями **MIT** или **Apache-2.0**, на ваш выбор.