đ± 1. Rappel : câest quoi un Seed dans dbt ?
Un Seed est simplement un fichier CSV que tu places dans le dossier data/
de ton projet dbt.
Quand tu exécutes la commande dbt seed
, dbt va le charger dans ton data warehouse comme une table.
đ Par dĂ©faut, dbt devine (infĂšre) le type des colonnes : STRING
, FLOAT
, BOOLEAN
, etc.
Mais ce nâest pas toujours fiable, surtout pour les dates, les decimal
, ou les id
.
đŻ 2. Ă quoi sert column_types
?
Lâoption column_types
te permet de forcer le type des colonnes manuellement, pour éviter les erreurs ou incohérences.
đ 3. Exemple simple de configuration dans dbt_project.yml
seeds:
my_project:
clients_seed:
column_types:
id: integer
nom: string
date_inscription: timestamp
revenu: numeric(10,2)
đ Fichier CSV : data/clients_seed.csv
id,nom,date_inscription,revenu
1,Ali,2024-01-01 10:00:00,1200.50
2,Walid,2024-01-05 14:30:00,1800.75
â RĂ©sultat dans Snowflake ou BigQuery :
dbt va créer une table clients_seed
avec :
id
âINTEGER
nom
âSTRING
date_inscription
âTIMESTAMP
revenu
âNUMERIC(10,2)
đĄ Pourquoi câest important ?
ProblÚme sans column_types | Résolu par⊠|
---|---|
date_inscription lue comme STRING | column_types: timestamp |
revenu arrondi ou mal typé | column_types: numeric(10,2) |
id traité comme FLOAT si une valeur contient .0 | column_types: integer |
Incohérences entre dev/prod | Typage contrÎlé et constant |
â Alternatives : dĂ©finir dans le modĂšle (moins courant)
Tu peux aussi utiliser config()
directement dans le .sql
(rarement fait pour les seeds) :
{{ config(column_types = {
"id": "integer",
"revenu": "numeric(10,2)"
}) }}
Mais cela ne fonctionne que dans un modĂšle dbt, pas dans le CSV lui-mĂȘme.
La meilleure pratique pour les seeds reste : définir les column_types
dans le dbt_project.yml
.
đ§ RĂ©sumĂ©
ĂlĂ©ment | Explication |
---|---|
column_types | Permet de forcer le type de chaque colonne dâun seed |
OĂč ? | Dans dbt_project.yml sous la section seeds: |
Pourquoi ? | Garantir la qualitĂ©, Ă©viter lâinfĂ©rence imprĂ©cise |
Utilisé avec | dbt seed pour charger des fichiers CSV comme tables |
Bonus | Compatible avec tous les adapters (Snowflake, BigQuery, etc.) |