Skip to content

Comparison between dbt-fabric and dbt-fabric-samdebruyn

This adapter has all the features of Microsoft's dbt-fabric adapter, plus some additional features. The following features are exclusive to dbt-fabric-samdebruyn:

Support for Python models

This adapter supports Python models. To use this, just add information about your Fabric Workspace and Lakehouse to the profiles.yml file.

Automatically find the host name of your Fabric Workspace

It can be tedious to find the correct host name for your Fabric Workspace, especially if you have separate Workspaces for development and production environments.

This adapter will automatically retrieve the host name for your Fabric Workspace, based on the workspace_name or workspace_id provided in the configuration.

This allows you to write a configuration like this:

default:
  target: dev
    outputs:
    dev:
      type: fabric
      driver: ODBC Driver 18 for SQL Server
      workspace: "gold_{{ env_var('FABRIC_ENV', 'dev') }}"
      database: dwh
      schema: dbt

Then, to run dbt against your production environment/Workspace, you can simply set the FABRIC_ENV environment variable to prod (if your Workspaces are named accordingly).

Extended support for authentication methods

While most authentication methods have been contributed back to dbt-fabric, some newer options are only available in this adapter.

MERGE in incremental and microbatch models

Incremental models in dbt-fabric support the append, insert_overwrite, and delete+insert strategies.

This adapter adds support for MERGE.

{{ config(
    materialized='incremental',
    unique_key='id',
    incremental_strategy='merge'
) }}

select * from source('my_source', 'my_table')
{% if is_incremental() %}
where updated_at > (select max(updated_at) from {{ this }})
{% endif %}

When using the merge strategy, dbt will generate a MERGE statement that matches on the unique_key and updates existing records or inserts new records as necessary. The unique_key can be a single column or a list of columns.

The adapter will use the merge strategy by default if a unique_key is provided and no incremental_strategy is specified.

This also works for microbatch models:

{{ config(
    materialized='incremental',
    unique_key='id',
    incremental_strategy='microbatch',
    batch_size='day',
    begin='2025-01-01',
    event_time='created_at'
) }}

select * from source('my_source', 'my_table')
{% endif %}

dbt-utils is already fully supported and more packages are being tested and added.

Plenty of bugfixes

The quality of this adapter is guaranteed by an extensive test suite of integration tests, which run on every change. Through this process, quite a few bugs have been found and fixed.

More on the roadmap

Ideas for future improvements include:

  • Synchronization of documentation between Microsoft Purview and dbt docs
  • Merging support for Spark SQL models into this adapter and allowing users to choose between Fabric SQL and Spark SQL models in the same project
  • Integration with external Iceberg/Delta Lake tables
  • Integration with external Iceberg/Delta Lake catalogs
  • Create an issue with your idea

For companies that want to use this adapter in production, I offer paid support and consulting services.