Dans cet article, nous allons découvrir la puissance de DuckDB en traitant un fichier CSV de près de 1 Go.

Nous verrons comment créer une table à partir de ce fichier, réaliser des agrégations complexes et exporter rapidement les résultats en CSV, le tout en profitant de la rapidité de DuckDB..

Prérequis

Avant de commencer, vous devez avoir DuckDB installé sur votre machine. Si ce n’est pas encore fait, vous pouvez l’installer en utilisant pip dans le terminal :

winget install DuckDB.cli

Connexion à DuckDB et chargement des données

Nous commencerons par ouvrir DuckDB et charger notre base de données locale.

Ligne de commande :

duckdb

duckdb C:/Users/votre/chemin/ma_base_de_donnees.duckdb

Ensuite, nous créons une table transactions à partir du fichier CSV.

CREATE TABLE transactions AS
SELECT * FROM read_csv_auto('C:/Users/votre/chemin/transactions_boutique.csv');

Il est également possible de déterminer les paramètres manuellement en utilisant la requête suivante : 

SELECT * FROM read_csv('C:/Users/votre/chemin/transactions_boutique.csv',
delimiter = ',',
header = TRUE,);

Description de la table

Une fois la table créée, nous pouvons décrire sa structure pour vérifier que les données ont bien été chargées.

DESCRIBE transactions;

Cette commande nous permet de visualiser les colonnes de la table transactions et leurs types de données.

Analyse des ventes par client et par mois

Nous allons maintenant effectuer une agrégation assez conséquente afin de tester l'efficacité de l'outil DuckDB. 

Pour cela, nous allons créer une vue qui nous permettra de définir une fois pour toutes l'analyse des ventes, puis d'utiliser simplement la vue pour l'exporter dans un fichier CSV.

CREATE VIEW ventes_par_client AS
SELECT
client_id,
client_nom,
EXTRACT(YEAR FROM date_transaction) AS annee,
EXTRACT(MONTH FROM date_transaction) AS mois,
SUM(montant_total) AS total_ventes,
COUNT(transaction_id) AS nombre_transactions
FROM transactions
GROUP BY client_id, client_nom, annee, mois
ORDER BY total_ventes DESC;

Nous obtenons notre table agrégé de manière quasiment instantanée, à présent, il nous reste plus qu’à l’exporter.

Export des résultats dans un fichier CSV

Après avoir exécuté la requête, nous pouvons exporter les résultats dans un fichier CSV pour une utilisation future.

resultats_ventes_par_produit.csv :

COPY (SELECT * FROM ventes_par_client)
TO 'C:/Users/votre/chemin/resultats_ventes_par_produit.csv'
(FORMAT CSV, HEADER);

Voilà, vous avez réalisé votre premier cas d’usage à l’aide de DuckDB, et vous avez pu constater à quel point son utilisation est simple et rapide. Grâce à sa capacité à effectuer des agrégations complexes en un temps record, DuckDB se révèle être un outil puissant pour la gestion de données. Si vous voulez un cas d’usage plus complexe, nous avons réalisé un article en lien avec un autre outil appelé dbt permettant d’aller un peu plus loin dans la gestion des données.

Vous cherhcez des experts ou des développeurs sur DuckDB ?  Contactez-nous !