Back to all notes
Data Analytics

Migrating Legacy Analytics: A Guide to SQL & dbt workflows

Modernizing data transformation doesn't have to be overwhelming. A practical look into transitioning legacy structures into BigQuery.

When dealing with legacy systems, one of the most significant challenges is untangling years of poorly documented SQL scripts and hardcoded logic. Over the past few months, I've been overseeing the transition of our analytical workloads into BigQuery.

The primary goal wasn't just to change the underlying database, but to completely rethink how we manage data transformations using modern tools like dbt (data build tool).

The Core Challenge

Before the migration, data engineering felt like a black box. If a metric looked off on a Power BI dashboard, tracing the error back to the source meant digging through hundreds of lines of nested views. We needed a system that offered version control, automated testing, and clear lineage.

"Data infrastructure shouldn't just be fast; it should be transparent. If you can't trace a metric's lineage in under five minutes, your architecture is hiding technical debt."

Why We Chose dbt and BigQuery

Integrating dbt into our stack changed how we approached SQL. Instead of writing DDL and DML statements manually, we started writing modular `SELECT` statements. Here are the key benefits we immediately noticed:

A Simple Example

Below is a basic example of how we structure a staging model in dbt. Notice how clean it reads compared to traditional nested subqueries.

with source as (
    select * from {{ source('raw_data', 'users') }}
),

staged as (
    select
        id as user_id,
        lower(email) as email_address,
        created_at
    from source
    where is_active = true
)

select * from staged

Looking Forward

The migration is ongoing, but the foundation is solid. The next phase will involve optimizing our Power BI datasets to connect directly to these structured BigQuery marts, eliminating intermediate Excel exports entirely.

If you are planning a similar migration, my advice is to start small. Don't try to rewrite your entire warehouse on day one. Pick a single, high-value dashboard, map out its dependencies, and migrate that slice first.

J

Muhammad Jahangir Alom

Dhaka, Bangladesh