Skip to main content

Transform the data using the dlt SQL client

A simple alternative to dbt is to query the data using the dlt SQL client and then performing the transformations using Python. The execute_sql method allows you to execute any SQL statement, including statements that change the database schema or data in the tables. In the example below we insert a row into customers table. Note that the syntax is the same as for any standard dbapi connection.

pipeline = dlt.pipeline(destination="bigquery", dataset_name="crm")
with pipeline.sql_client() as client:
f"INSERT INTO customers VALUES (%s, %s, %s)",

In the case of SELECT queries, the data is returned as a list of row, with the elements of a row corresponding to selected columns.

with pipeline.sql_client() as client:
res = client.execute_sql(
"SELECT id, name, email FROM customers WHERE id = %s",
# prints columns values of first row

Other transforming tools

If you want to transform the data before loading, you can use Python. If you want to transform the data after loading, you can use SQL or one of the following:

  1. dbt (recommended).
  2. Pandas.

This demo works on codespaces. Codespaces is a development environment available for free to anyone with a Github account. You'll be asked to fork the demo repository and from there the README guides you with further steps.
The demo uses the Continue VSCode extension.

Off to codespaces!


Ask a question

Welcome to "Codex Central", your next-gen help center, driven by OpenAI's GPT-4 model. It's more than just a forum or a FAQ hub – it's a dynamic knowledge base where coders can find AI-assisted solutions to their pressing problems. With GPT-4's powerful comprehension and predictive abilities, Codex Central provides instantaneous issue resolution, insightful debugging, and personalized guidance. Get your code running smoothly with the unparalleled support at Codex Central - coding help reimagined with AI prowess.