Skip to content
METRIC OAK

New: the 3-week Data Platform Assessment: fixed fee, priced roadmap. See what's included →

Migration

Teradata to Microsoft Fabric migration: a practical guide

How to move a Teradata warehouse to Microsoft Fabric: Warehouse or Lakehouse, converting Teradata SQL to T-SQL, QUALIFY and case-sensitivity differences, BTEQ and FastLoad replacements, Power BI and cutover.

Hemant Walchale

Hemant Walchale
· 2 min read

Organizations standardized on Microsoft (Azure, Microsoft 365 and Power BI) increasingly choose Fabric as the destination for their Teradata estate. The data model and reporting layer move well. The work is concentrated in converting Teradata SQL to T-SQL and in rebuilding BTEQ and load scripts.

This is the approach we recommend.

1. Inventory and retire

List tables, views, macros, stored procedures, BTEQ, FastLoad, MultiLoad and TPT scripts, scheduled jobs and consumers. Teradata’s query logs (DBQL) show what is used; archive the rest. Also list every Power BI dataset that reads Teradata, because those move last.

2. Choose the landing zone

  • Fabric Warehouse for reporting tables, views and stored procedures in T-SQL.
  • Fabric Lakehouse for heavy transformation in Spark and for file or semi-structured data.
  • Both store Delta tables in OneLake, and Power BI can read them directly.

3. Convert Teradata SQL to T-SQL

Teradata Fabric Warehouse (T-SQL) What to watch
QUALIFY Window function in a subquery or CTE, filtered outside Common; rewrite mechanically.
SAMPLE, TOP n WITH TIES TOP, TABLESAMPLE or window functions Check result sizes.
NOT CASESPECIFIC comparisons Case-sensitive by default Choose collation deliberately or normalize case.
SET tables No duplicate rejection Add deduplication where the business relied on it.
Macros Stored procedures or views Rewrite.
Volatile tables Temporary tables or staging tables Check current Warehouse support for your pattern.
Teradata date arithmetic and formats DATEADD, DATEDIFF, CONVERT Test every date calculation.
Primary and secondary indexes Not used Drop index logic.
BTEQ scripts T-SQL scripts run by Data Factory pipelines Rebuild error handling.
FastLoad, MultiLoad, TPT Copy activity, COPY INTO from storage Stage files in OneLake or ADLS first.

Check each converted procedure against the Warehouse’s documented T-SQL limitations and test the results.

4. Load, sync and reconcile

Export history to files in OneLake or ADLS and load it with COPY INTO or pipelines. Keep Fabric in sync during the parallel run, then compare row counts, totals and row-level differences by domain. Case sensitivity, SET tables and date logic explain most mismatches.

5. Repoint Power BI and switch off Teradata

Move Power BI semantic models to Fabric one domain at a time (often to Direct Lake mode), and stop each domain’s Teradata jobs on cutover day, working back from the renewal date.

The short version

Retire unused objects, land reporting tables in a Fabric Warehouse and heavy transformation in a Lakehouse, rewrite QUALIFY, macros and BTEQ for T-SQL, handle case sensitivity deliberately, reconcile, repoint Power BI and switch off Teradata by domain.

Compare with Teradata to Snowflake and Teradata to Databricks, or try the platform chooser. Browse all migration guides.

Not sure where your own platform stands? Take the free 3-minute data platform scorecard. Unfamiliar terms are explained in the data engineering glossary.

Frequently asked questions

Is Teradata SQL close to Fabric's T-SQL?

Less close than to Snowflake. Fabric Warehouse uses T-SQL, so Teradata-specific syntax such as QUALIFY, SAMPLE, Teradata date arithmetic and macros must be rewritten. Most of this is mechanical, and conversion tools help, but plan more SQL rework than for a Snowflake target.

Should Teradata land in a Fabric Warehouse or a Lakehouse?

Usually a Warehouse for the SQL-heavy reporting layer, because it keeps tables, views and stored procedures in T-SQL. Heavy transformation and file-based data often go to a Lakehouse with Spark. Both store Delta tables in OneLake, so they work together.

What about Teradata's case-insensitive comparisons?

Teradata often compares text case-insensitively (NOT CASESPECIFIC). Fabric Warehouse compares case-sensitively by default. Check the collation options available when creating the warehouse, or normalize case in the data, so joins and filters return the same rows.

Have 30 minutes? Get a senior architect’s view of your data platform.

No sales deck. You talk to the engineer who would lead the work.

Book an architecture review