dbt: Qu’est-ce qu’un adapter plugin dbt ?

🧠 Qu’est-ce qu’un adapter plugin dbt ?

Un adapter plugin est un module Python qui permet à dbt de parler avec un entrepôt de données spécifique (Snowflake, BigQuery, Redshift, PostgreSQL, etc.).

dbt écrit du SQL “standard”, mais chaque data warehouse a ses particularités : types de données, syntaxe SQL, fonctions intégrées, gestion des objets, etc.
L’adapter sert de traducteur entre le langage “dbt” et le dialecte SQL du warehouse.


🧩 À quoi sert un adapter dbt ?

FonctionExemple concret
🔌 Connexion au data warehouseComment se connecter à BigQuery via l’authentification GCP
🏗 Création d’objets SQLComment créer une table, une vue, une UDF
🧾 Traduction des requêtescurrent_timestamp en CURRENT_TIMESTAMP() (Snowflake) ou CURRENT_DATETIME() (BigQuery)
🔄 Gestion des modèles incrementalChaque moteur a une stratégie différente pour MERGE, DELETE, INSERT
🧪 Exécution des tests, seeds, snapshotsCes opérations doivent s’adapter aux capacités du warehouse

🔧 Exemple : Comparaison entre deux adapters

1. dbt-snowflake

  • Package : dbt-snowflake
  • Traduit un modèle en SQL adapté à Snowflake (CREATE OR REPLACE TABLE ...)
  • Implémente les fonctions spécifiques comme snowflake__get_replace_sql() ou get_catalog() pour introspection

2. dbt-bigquery

  • Package : dbt-bigquery
  • Gère les datasets et les tables partitionnées
  • Utilise des fonctions spécifiques à BigQuery (_PARTITIONTIME, CURRENT_DATETIME())

🛠 Comment on installe un adapter ?

Tu installes un adapter comme une dépendance Python :

pip install dbt-snowflake
# ou
pip install dbt-bigquery

Et dans ton profiles.yml (dans ~/.dbt/) tu spécifies l’adapter utilisé :

my_project:
  target: dev
  outputs:
    dev:
      type: snowflake
      ...

Ici, type: snowflake indique à dbt d’utiliser l’adapter dbt-snowflake.


🔌 Pourquoi c’est essentiel ?

Sans adapter :

  • dbt ne pourrait pas se connecter à ton warehouse
  • ne saurait pas comment exécuter les requêtes
  • ne pourrait pas créer les tables correctement
  • ne saurait pas comment gérer les modèles incremental, snapshot, seed

🧠 Résumé

ÉlémentRôle
Adapter pluginTraducteur entre dbt et le SQL spécifique du warehouse
ImplémenteConnexion, exécution, création d’objets, stratégie incremental
Exemplesdbt-snowflake, dbt-bigquery, dbt-redshift, dbt-postgres
InstallationVia pip, puis configuré dans profiles.yml
Obligatoire ?✅ Oui, dbt ne peut pas fonctionner sans adapter

Leave a Reply

Your email address will not be published. Required fields are marked *