Use built-in extractors (CSV, JSON, XML, XLS, ...), official add-ons (SQL), or write your own.
Apply changes using simple python, or provided transformation classes.
Use our built-in writers (CSV, JSON, XML, XLS, ...) or connect to your custom services.
Tired of learning new APIs?
You'll be up and running in 10 minutes, if you know some python.
Each transformation has a specific, unique, small and scoped purpose (think UNIX), enhancing testability and ease of maintenance.
It's just python ! We worked hard to provide a clean API, using the standard data structures you already know.
The smallest building blocks of Bonobo scripts are plain old python objects. Anything callable (or iterable) can be used as a node.
Bonobo provides the tools to combine the nodes in graphs, visualize the structure and execute them efficiently.
Bonobo processes the data as streams of independent rows.
Each node handles one line at a time, but the nodes run in parallel.
Use the command line interface and watch live and detailed statistics.
It's easy to design your graph according to your business requirements.
Bonobo is just a minimalistic toolkit to help you build ETL jobs.
Use bonobo.config to create parametrizable classes that will get configured at runtime with options and service dependencies, or use built-in transformations to work with usual file formats and operations.
Clean, readable and easy to test!
You just built your first reusable block, now just create instances of this class in your graphs, eventually overriding some parameters.
Once again, it's just python so you can bundle your blocks in modules or packages, as you would do with the rest of your codebase.
(jump to 9 minutes to skip the intro)
Official bonobo-sqlalchemy extension, still in alpha/preview, allows to connect, extract and load data from and into popular SQL databases.
Work with SQL databases
Bonobo uses plugins to display status of an ETL job while and after it runs. It will autodetect if you're working in a Jupyter Notebook and use an HTML widget to display live status.
Although Bonobo is a code-as-configuration framework, you can use the built-in inspector to output a graphviz description to visualize and/or document your ETL jobs.
The official bonobo-docker extension can be used to build and run ETL jobs within Docker containers.
Run an ETL job in docker