🧠 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 |