This adapter includes macro overrides that make popular dbt community packages work with Microsoft Fabric. Without these overrides, most community packages fail because they generate PostgreSQL-compatible SQL that neither T-SQL nor Fabric's Spark SQL accepts.
Community packages use dbt's dispatch system to allow adapters to override their macros. This adapter ships fabric__ and fabricspark__ prefixed versions of incompatible macros in its built-in macro directories.
When a package macro dispatches to find an adapter-specific implementation, dbt looks for fabric__<macro_name> (Data Warehouse) or fabricspark__<macro_name> (Lakehouse). If this adapter provides one, it takes priority over the package's default implementation.
To activate the macro overrides, you must add a dispatch configuration to your dbt_project.yml for each package you use. Without this, dbt's default dispatch does not search the adapter's internal macros for package-namespaced macros.
=== "Data Warehouse"
```yaml
dispatch:
- macro_namespace: dbt_utils
search_order: ['your_project_name', 'dbt', 'dbt_utils']
- macro_namespace: dbt_date
search_order: ['your_project_name', 'dbt', 'dbt_date']
- macro_namespace: dbt_expectations
search_order: ['your_project_name', 'dbt', 'dbt_expectations']
- macro_namespace: dbt_external_tables
search_order: ['your_project_name', 'dbt', 'dbt_external_tables']
- macro_namespace: audit_helper
search_order: ['your_project_name', 'dbt', 'audit_helper']
- macro_namespace: dbt_profiler
search_order: ['your_project_name', 'dbt', 'dbt_profiler']
```
=== "Lakehouse"
```yaml
dispatch:
- macro_namespace: dbt_utils
search_order: ['your_project_name', 'dbt', 'dbt_utils']
- macro_namespace: dbt_date
search_order: ['your_project_name', 'dbt', 'dbt_date']
- macro_namespace: dbt_expectations
search_order: ['your_project_name', 'dbt', 'dbt_expectations']
- macro_namespace: audit_helper
search_order: ['your_project_name', 'dbt', 'audit_helper']
- macro_namespace: dbt_profiler
search_order: ['your_project_name', 'dbt', 'dbt_profiler']
```
Replace your_project_name with the name field from your dbt_project.yml. Only include entries for the packages you actually use.
The dbt entry in the search order tells dbt to check the adapter's built-in macros (the "global project namespace") before falling back to the package's defaults. This is how the adapter's compatible macros take priority.
| Package | Tested version | Data Warehouse | Lakehouse |
|---|---|---|---|
| dbt-utils | 1.3.3 | ✅ Tested | ✅ Tested |
| dbt-date | 0.17.2 | ✅ Tested | ✅ Tested |
| dbt-codegen | 0.14.1 | ✅ Tested | ✅ Tested |
| dbt-expectations | 0.10.10 | ✅ Tested | ✅ Tested |
| dbt-audit-helper | 0.13.0 | ✅ Tested | ✅ Tested |
| dbt-external-tables | 0.11.0 | ✅ Tested | ❌ Not applicable |
| dbt-profiler | 1.0.0 | ✅ Tested | ✅ Tested |
| dbt-project-evaluator | 1.2.4 | ❌ Not compatible (upstream PR) | ✅ Tested |
"Tested" means the adapter runs automated integration tests for that package on the given compute engine. "Via dbt-spark" means the package works through inherited dbt-spark macros without adapter-specific overrides.
!!! info "dbt-external-tables on Lakehouse"
The dbt-external-tables package is not applicable to the Lakehouse adapter. Fabric Lakehouse uses [OneLake shortcuts](https://learn.microsoft.com/fabric/onelake/onelake-shortcuts-overview?WT.mc_id=MVP_310840) for external data access, not SQL-level external tables.
Some package features do not work due to platform limitations. The package detail pages document which specific macros or tests are affected and why.
- dbt-expectations: regex tests (
expect_column_values_to_match_regexand variants) do not work because T-SQL has no native regex support. Timeseries tests that depend on dbt-date's date arithmetic also fail. - dbt-audit-helper:
compare_relation_columnshas case-sensitivity issues with Fabric's BIN2 collation. Struct/unit test models are not supported. - dbt-profiler:
profile_structdoes not work (BigQuery-specificSTRUCTtype).
- dbt-expectations: regex tests produce wrong results because the upstream guards them with
target.type in ['spark']but this adapter reportsfabricspark.generate_series-based tests fail with compilation errors. - dbt-audit-helper: struct models and
compare_and_classify(which uses distinct window functions) are not supported. - dbt-codegen:
generate_sourcedoes not work because it queriesinformation_schema.tables, which does not exist in Spark SQL. - dbt-profiler:
profile_structdoes not work (STRUCTtype is BigQuery-specific).