Étape 0 : Créer une connexion DuckDB
Pour commencer, il faut ouvrir une connexion vers DuckDB. C’est un peu comme ouvrir une session de travail : tant qu’elle est ouverte, on peut y stocker des tables temporaires et lancer des requêtes.
DuckDB s’utilise en R avec le package duckdb, qui suit l’interface standard DBI (la même interface que pour se connecter à PostgreSQL ou MySQL en R). Si vous avez déjà utilisé DBI::dbConnect() avec une autre base, la logique est identique.
Installer et charger le package
install.packages("duckdb") # le package DBI s'installe en même temps que duckdb
library(DBI)
library(duckdb)Ouvrir une connexion
Deux cas de figure :
Connexion en mémoire (le plus courant pour une étude)
Les données ne sont pas conservées sur disque : tout disparaît à la fermeture de la session R. C’est suffisant pour la majorité des études ou réponses à la demande.
con <- DBI::dbConnect(duckdb::duckdb())Connexion vers un fichier sur disque
Utile si vous voulez que la base DuckDB persiste d’une session R à l’autre (par exemple pour un projet que vous reprenez sur plusieurs jours).
con <- DBI::dbConnect(duckdb::duckdb(), dbdir = "mon_etude.duckdb")Un seul objet con suffit pour tout le script : c’est lui qu’on réutilise dans toutes les étapes suivantes (chargement, manipulation, export).
.duckdb
Les fichiers .duckdb ne doivent pas être pérennisés, ni utilisés dans des pipelines de production de données. Le format Parquet doit être privilégié.
Il est aussi possible de configurer le comportement de la base (mémoire maximale utilisée, nombre de threads, etc.) avec des instructions SET
DBI::dbExecute(con, "SET preserve_insertion_order = false;")L’instruction de cet exemple doit être ajoutée après chaque création de base duckdb. Elle permet de réduire l’utilisation de la RAM lors de calculs, ce qui réduit le risque de saturation de la mémoire.
Voir la documentation de configuration pour la liste complète des options.
Attention, la fonction DBI::dbExecute() n’accepte qu’une seule instruction à la fois. Pour modifier plusieurs paramètres, il faut passer autant de requêtes que d’éléments à modifier.
Fermer la connexion
Une fois le script terminé, on ferme proprement la connexion. C’est une bonne pratique à prendre dès le départ, en particulier avec une base sur disque.
DBI::dbDisconnect(con, shutdown = TRUE)Sources
- Documentation du client R : duckdb.org/docs/current/clients/r
- Manuel de référence du package R : r.duckdb.org
- Options de configuration de DuckDB : duckdb.org/docs/current/configuration/overview