July 18, 202510 minute read

Introducing target-ducklake: A Meltano Target For Ducklake

Steven Wang
Introducing target-ducklake: A Meltano Target For Ducklake | Definite

At Definite, we’ve been a big fan of DuckDB and use it as a core part of our data infrastructure. When Duck Labs announced Ducklake in May, it was a no-brainer to integrate it with our data stack. Ducklake significantly enhances many aspects of our DuckDB-centric data warehousing strategy—most notably by enabling concurrent reads and writes, all while preserving DuckDB as the query engine (post on how we previously handled reads and writes).

Another big part of our stack is Meltano, which we use for data ingestion. To put all the pieces together, we built target-ducklake, a Meltano and Singer compatible target for loading data into Ducklake. A few of the target’s features are highlighted below:

  • Type conversions: Ensures that data types are correctly converted when loading into Ducklake. Without these conversions, certain types (such as timestamps or JSON fields) would default to being stored as strings in the underlying Parquet files, rather than maintaining their original data types.
  • Data sync strategies: append, merge/upsert
  • Storage: Google Cloud Storage, S3, local files
  • Catalog Options: Postgres, MySQL, SQLite, DuckDB
  • Partitions: Timestamp partitions are supported at year, month, day, hour granularities. Categorical partitions are also supported (eg status, country, team, etc.)

It’s still early days for Ducklake and while target-ducklake is still under active development, we would love for users to give it a try, contribute, and provide feedback!

Data doesn't need to be so hard

Get the new standard in analytics. Sign up below or get in touch and we'll set you up in under 30 minutes.