🧠 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 ?
| Fonction | Exemple concret |
|---|---|
| 🔌 Connexion au data warehouse | Comment se connecter à BigQuery via l’authentification GCP |
| 🏗 Création d’objets SQL | Comment créer une table, une vue, une UDF |
| 🧾 Traduction des requêtes | current_timestamp en CURRENT_TIMESTAMP() (Snowflake) ou CURRENT_DATETIME() (BigQuery) |
🔄 Gestion des modèles incremental | Chaque moteur a une stratégie différente pour MERGE, DELETE, INSERT |
| 🧪 Exécution des tests, seeds, snapshots | Ces 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()ouget_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ément | Rôle |
|---|---|
| Adapter plugin | Traducteur entre dbt et le SQL spécifique du warehouse |
| Implémente | Connexion, exécution, création d’objets, stratégie incremental |
| Exemples | dbt-snowflake, dbt-bigquery, dbt-redshift, dbt-postgres |
| Installation | Via pip, puis configuré dans profiles.yml |
| Obligatoire ? | ✅ Oui, dbt ne peut pas fonctionner sans adapter |