Live data from Hacker News

Show HN: Dlt – Python library to automate the creation of datasets

colab.research.google.com

1–10 of 56 posts

Show HN: Dlt – Python library to automate the creation of datasets

#1
Hi HN,

We're Anna, Adrian, Marcin and Matt, developers of dlt. dlt is an open source library to automatically create datasets out of messy, unstructured data sources. You can use the library to move data from about anywhere into most of well known SQL and vector stores, data lakes, storage buckets, or local engines like DuckDB. It automates many cumbersome data engineering tasks and can by handled by anyone who knows Python.

Here’s our Github: https://github.com/dlt-hub/dlt

Here’s our Colab demo: https://colab.research.google.com/drive/1DhaKW0tiSTHDCVmPjM-...

— — —

In the past we wrote hundreds of Python scripts to fit messy data sources into something that you can work with in Python - a database, Pandas frame or just a Python list. We were solving the same problems and making the similar mistakes again and again.

This is why we built an easy to use Python library called dlt that will automate most data engineering tasks. It hides the complexities of data loading and automatically generates a structured and clean datasets for immediate querying and sharing.

— — —

At its core, dlt removes the need to create the dataset schemas, react to changing data, generate append or merge statements, and to move the data in transactional and idempotent manner. Those things are automated and can be declared right in the Python code, just by decorating functions.

Add @dlt.resource decorator, give it a few hints, and convert any data into a simple pipeline that creates and updates datasets.

dlt gets the details out of your way:

1. You do not need to worry about the structure of a database or parquet files

dlt will create a nice, typed schema out of your data and will migrate it when the data changes. You can put some data contracts and Pydantic models on top to keep your data clean.

2. You do not need to write any INSERT/UPDATE or data copy statements

dlt will push the data to DuckDB, Weaviate, storage buckets and many popular SQL stores. It will align the data types, file formats, and identifier names automatically

3. You do not need to worry when you need to add new data or update the changes.

dlt lets you declare how to load the data, how to increment it and will keep the loading state together so they are always in sync.

4. You keep how you develop and test your code

Iterate and test quickly on your laptop or in a dev container. Run locally on DuckDB and just swap destination name to go to the cloud - your code, schema and data will stay the same.

5. You can work with data on your laptop.

Combine dlt with other tools and libraries to process data locally. duckdb, Pandas, Arrow tables and Rust based loading libraries like ConnectorX work nicely with dlt and process data blazingly fast, compared to the cloud.

6. You do not need to worry if your pipeline will work when you deploy it.

dlt is a minimalistic Python library, requires no backend and works whenever Python works. You can finetune it to work on constrained environments like AWS Lambda or run with Airflow, GitHub Actions or Dagster.

dlt has an Apache 2.0 license. We plan to make money by offering organizations a paid control plane, where dlt users can track and policy what every pipeline does, manage schemas and contracts across organization, create data catalogues, and share them with the team members and customers.

Show HN: Dlt – Python library to automate the creation of datasets
colab.research.google.com

Re: Show HN: Dlt – Python library to automate the creation of datasets

#3
post #2

Nice, the demo is cool. How do you differentiate from DBT?

first you extract and load data with dlt and then you transform them with dbt. so both tools work very well together. we did a really cool helper to make it easier(https://dlthub.com/docs/dlt-ecosystem/transformations/dbt/) (I'm one of core devs in dltHub)

Re: Show HN: Dlt – Python library to automate the creation of datasets

#6
post #4

A similar tool was discussed a few days ago. OpenRefine. https://news.ycombinator.com/item?id=37970800

dlt is a python library that you can probably plug into the OpenRefine java application to enable moving the data somewhere easily and into different formats, making OpenRefine more useful in a connected environment.

I would not say they are similar - rather OpenRefine is made for visual data cleaning, while dlt is made for automation of data movement with structuring and typing to enable crossing different format standards with ease.

Together you should have a good combination of automation and manual tweaking option if needed.

Re: Show HN: Dlt – Python library to automate the creation of datasets

#7
post #4

A similar tool was discussed a few days ago. OpenRefine. https://news.ycombinator.com/item?id=37970800

I'd say they're complimentary. One could use dlt to load the data and then use OpenRefine for to clean/transform it. dlt already does when combined with dbt, for example.

Re: Show HN: Dlt – Python library to automate the creation of datasets

#8

Tbh I found it confusing why suddenly you were using chatgpt in the middle of the example. It made it seem like this is a gpt based tool but it's not.

Thank you for the feedback! I can see now how it could be confusing.

The reason we used chatgpt is because it's an easy starting point - why read through examples when you can get the one you want in seconds?

Because dlt is a library, it's closer to how language works and gpt can just use it - from our experiments, we cannot say the same about frameworks.

Re: Show HN: Dlt – Python library to automate the creation of datasets

#10
post #9

Do you plan on integrating with metadata sources as well such as Amundsen or Datahub? Or is the plan that DLT will become the metadata source?

Since dlt generates a schema, and tracks evolution etc, contains lineage, and follows data vault standard it can easily provide metdata or lineage info to the other tools.

At the same time, dlt is a pipeline building tool first - so if people want to read metadata from somewhere and store it elsewhere, they can.

If you mean to take metadata like we integrate with arrow - that remains to be seen if the community might want this or find it useful, we will not develop plugins for collecting cobwebs, but if there are interested users we will add it to our backlog.

Post reply on HN