⚡ Free tier · Browser-only · Snowflake & BigQuery

Convert your Tableau workbook to dbt in minutes

Upload a .twb and get a complete, layered dbt package: staging models, fct_ and dim_ marts, LOD-to-CTE translation, a MetricFlow semantic layer, schema tests, and source definitions.

Staging layer per datasource, fct_ and dim_ models properly split
LOD expressions (FIXED / INCLUDE / EXCLUDE) translated to CTE patterns
MetricFlow metrics.yml generated for a queryable semantic layer
sources.yml and schema tests ready for dbt test on day one
Multi-workbook merge mode with conflict report
SETUP.md and full translation report included in every export
Formula data never leaves your browser
Convert Workbook to dbt
Target warehouse
Snowflake
BigQuery
Drop .twb
or click to browse
Output preview
📁staging/
📄stg_sales.sqlSTG
📁marts/
📄fct_orders.sqlFCT
📄dim_customers.sqlDIM
📄metrics.ymlYML
📄sources.ymlYML
📄SETUP.md
🔒 All processing is local. Nothing is uploaded.
How It Works
01
Parse
Reads every calculated field from .twb. Resolves internal Calculation_XXXX IDs to human-readable names. Maps each field to its datasource.
02
Classify
Categorises fields by complexity: simple expressions, date/conditional logic, LOD expressions (FIXED/INCLUDE/EXCLUDE), and table calcs flagged for window function rewrites.
03
Translate
Rule-based pass converts Tableau syntax to your target dialect. LOD expressions generate CTE templates. Complex calcs go through an AI pass. Dependency chains are resolved.
04
Structure
Aggregates land in fct_ models with GROUP BY. Row-level expressions go into dim_ models. LOD CTEs are injected into the WITH clause. MetricFlow metrics.yml is generated.
What You Get
🗂️
staging/stg_*.sql
Staging layer, one per datasource
A clean, typed view over your raw source table. Column names referenced in your Tableau formulas are pre-populated. All downstream models reference this.
📐
marts/fct_*.sql + dim_*.sql
fct_ and dim_ models, properly split
Aggregate expressions land in a fct_ model with a GROUP BY you configure. Row-level expressions land in a dim_ model. No more invalid SQL mixing both in one SELECT.
📡
metrics.yml
MetricFlow semantic layer (dbt 1.6+)
Simple aggregations become proper semantic_model measures. Derived expressions are generated as type: derived metrics. Fill in your primary key, run dbt sl validate.
🔗
FIXED / INCLUDE / EXCLUDE to CTEs
LOD expressions translated to CTE patterns
FIXED LODs are converted to SQL CTE templates and injected directly into your fct_ model's WITH clause. No manual rewrite required.
🧪
sources.yml + schema.yml
Source definitions and schema tests
Datasource names extracted from your workbook XML and pre-populated in sources.yml. not_null tests on every measure, unique + not_null on staging primary keys.
🔀
conflict_report.md
Multi-workbook merge mode
Upload 2+ workbooks. Identical fields across workbooks are auto-merged into one canonical definition. Formula conflicts are flagged with both versions side by side.
🗺️
STG / FCT / DIM preview before you run
Models breakdown before you commit
Before the AI pass, see the full output structure: every staging model, which datasources get a fct_ vs dim_ model, field counts, grain status, and LOD CTE count.
📋
SETUP.md + translation_report.md
Step-by-step docs and full translation report
SETUP.md lists every datasource, grain instructions, and dbt commands to run. The translation report shows original formula to SQL output side by side.