Key things to know
What is column-level lineage (CLL)?
What is column-level lineage (CLL)?
Column-level lineage is a more nuanced visualization of your DAG that accounts for the connections between columns in each table in your data warehouse, not just tables.
How can I use CLL right now to improve my dbt workflow?
How can I use CLL right now to improve my dbt workflow?
- Debugging: CLL can dramatically accelerate the debugging process by giving you visibility into how a column is calculated without having to go line-by-line through each model.
- Knowledge sharing & discussion: CLL can make it easier for data team members to get up to speed on a new data table. We’ve found it makes a great visual for bug bashes, demos, and a variety of internal meeting use cases.
How is CLL calculated?
How is CLL calculated?
Most vendors who offer CLL use batch metadata syncs from your cloud warehouse provider to generate it. This is effective but quite slow. As a result, lineage is often only recalculated once per day.Turntable takes a different approach. We convert your dbt code into sql abstract syntax (using sqlglot) and leverage our own algorithm to recurse the syntax tree and build CLL.
What connection types are possible between columns?
What connection types are possible between columns?
With table lineage, tables are either connected or they are not. With CLL, connections are more nuanced. Here are the main types, and how they are represented in the extension:
What are the limitations of your approach?
What are the limitations of your approach?
What improvements do you plan to make to this over time?
What improvements do you plan to make to this over time?
- Better dialect coverage: we plan to expand our solution to Databricks, Redshift, Starburst/Trino, and others going forward.
- Better syntax coverage: our goal is 99+% coverage of sql syntax in our supported dialects
- New features based on CLL: we are actively working on new features that leverage CLL for a better experience, including breaking change detection and column auto-renaming.
Worked example
Below is the code for an example dbt model called
current_pipeline. See the toggle below for its column-level lineage. We’ve hidden it in case you want to try to work through the answer yourself first!models/marts/sales/current_pipeline.sql
Answer
Answer

