Dans cet article, nous allons vous guider à travers l'installation et la configuration de DuckDB et DBT pour effectuer des transformations de données. L'objectif est de réaliser des agrégations sur des fichiers CSV et de générer un fichier de sortie, que ce soit au format Parquet ou un autre format de votre choix.
1 - Installation de DuckDB et DBT
Commencez par installer DuckDB. Sur Windows, ouvrez le terminal et exécutez la commande suivante :
winget install DuckDB.cli
Sur Linux et MacOS, vous pouvez suivre les instructions détaillées sur la page officielle de DuckDB : Installation – DuckDB
2 - Installation de Python et des dépendances nécessaires
Ensuite, il vous faudra installer Python en téléchargeant la dernière version stable depuis le site officiel : Télécharger Python
Une fois Python installé, créez un environnement virtuel pour isoler les dépendances de votre projet :
python -m venv mon_env
source mon_env/bin/activate # Sur Linux/MacOS
mon_env\Scripts\activate # Sur Windows
Enfin, installez DBT Core et l’adaptateur pour DuckDB à l'aide de pip :
pip install dbt-core dbt-duckdb
dbt-core est le package principal de DBT, tandis que dbt-duckdb permet à DBT d’interagir avec DuckDB en tant que moteur de base de données.
3 - Initialisation du projet dbt
dbt init mon_projet
Après avoir exécuté cette commande, il faudra sélectionner Duckdb comme adaptateur de base de données.
La commande dbt init crée une structure de répertoire de base pour votre projet, facilitant l'organisation de vos modèles, macros et autres configurations nécessaires à l'exécution des transformations de données.
4 - Configuration du fichier dbt_project
Le fichier dbt_project.yml contient la structure complète du projet et définit comment dbt doit exécuter les opérations. Il inclut notamment la clé profile, qui doit correspondre au nom de votre projet dans le fichier profiles.yml, et permet également de spécifier les chemins où seront stockées les données et fichiers liés au projet dbt.
name: 'projetdbt'
version: '1.0.0'
profile: 'projetdbt'
model-paths: ["models"]
analysis-paths: ["analyses"]
test-paths: ["tests"]
seed-paths: ["seeds"]
macro-paths: ["macros"]
snapshot-paths: ["snapshots"]
clean-targets:
- "target"
- "dbt_packages"
on-run-start:
- "{{ register_upstream_external_models() }}"
vars :
paths:
path:"C:/Users/<NomUtilisateur>/projetdbt
5 - Configuration des modèles dbt
Les modèles DBT sont des fichiers SQL qui contiennent les transformations que vous souhaitez effectuer sur vos données. Pour cela, il faudra créer ce fichier SQL dans le répertoire models/ pour définir une transformation.
Ce fichier définit à la fois l'emplacement du fichier d'entrée, ainsi que le lieu de stockage et le type du fichier de sortie.
(Attention : il ne faut pas finir sa requête sql avec un “;”)
-- Définition des variables :
{% set inputcsv = var('paths')['path'] ~ "large_dataset.csv" %}
{% set outputparquet = var('paths')['path']~"aggregated_dataset.parquet" %}
-- Configuration de l'output :
{{ config(materialized='external', location=outputparquet) }}
-- Agrégation des CSV en format parquet :
SELECT
YEAR(date) AS year,
COUNT(id) AS count_id,
AVG(value) AS avg_value,
MAX(value) AS max_value,
MIN(value) AS min_value
FROM read_csv_auto('{{ inputcsv }}')
GROUP BY YEAR(date)
ORDER BY year
6 - Exécution du projet
Une fois que les fichiers sont configurés, il est temps d’exécuter les modèles DBT avec la commande suivante dans le terminal :
dbt run
Si vous souhaitez exécuter un fichier en particulier, vous pouvez le spécifier de la manière suivante :
dbt run --models transfodata.sql
En cas d'erreurs pendant l'exécution, la commande suivante vous permettra d’obtenir des informations détaillées pour comprendre d'où viennent les problèmes :
dbt debug
On peut à présent exécuter la requête suivante sur Duckdb pour voir notre nouvelle table agrégée :
select * from “C:\Users\NomUtilisateur\projetdbt\aggregated_dataset.parquet";
Vous disposez désormais de toutes les clés pour transformer vos données rapidement et efficacement grâce à DuckDB et DBT.
Ce tuto vous a montré comment automatiser l'agrégation de fichiers CSV et générer des résultats dans un fichier. Avec ces outils en main, vous êtes prêts à optimiser vos projets de données et à explorer de nouvelles possibilités de transformation avec simplicité.
Vous cherhcez des experts ou des développeurs sur DuckDB ? Contactez-nous !