Manipulation de données volumineuses à l’aide de DuckDB avec R pour la réalisation d’études ou de réponses à la demande

Ce tutoriel est à destination des utilisateurs des plateformes de l’Insee (AUS, LS3, SSPCloud). Toutefois, les utilisateurs hors Insee peuvent adapter les différents codes produits à l’infrastructure de leur organisation (logiciels utilisé sur un poste en local, Nubonyxia…)

Pourquoi DuckDB ?

DuckDB est une base de données qui tourne directement dans votre session R, sans serveur à installer. On l’utilise avec le langage SQL, mais on peut aussi l’utiliser avec les verbes dplyr que vous connaissez déjà.

Ses avantages pour une étude ou une réponse à la demande :

  • Rapide : conçu pour analyser de gros volumes de données (bien plus rapide que data.frame ou même dplyr seul sur de gros fichiers ou que RPostGres pour récupérer des données depuis une base de données PostgreSQL). Un exemple de comparaison entre duckDB et le package RPostGres est disponible ici
  • Économe en mémoire : peut traiter des fichiers plus gros que la RAM disponible.
  • Polyvalent : lit et écrit nativement des fichiers Parquet, se connecte à des bases PostgreSQL, et sait lire/écrire sur du stockage S3 (l’espace de stockage disponible sur les instances d’Onyxia, comme LS3 ou le SSPCloud).
  • Simple : une seule ligne pour se connecter, pas de serveur à administrer.
NoteLiens vers la documentation

Documentation officielle : duckdb.org/docs (client R) : r.duckdb.org

Support de formation Insee R données volumineuses : Formation R données volumineuses

Le plan du tutoriel

Ce tutoriel suit le déroulé type d’une étude : se connecter, charger les données, les manipuler, puis exporter le résultat.

Étape 0 : Créer une connexion DuckDB

On ouvre une session DuckDB depuis R. C’est le point de départ obligatoire de tout script.

Étape I : Charger les données

On part d’une base PostgreSQL, on extrait les données vers un fichier Parquet, puis on apprend à importer un Parquet stocké sur un espace S3.

Étape II : Manipuler les données

On transforme les données avec DuckDB, en comparant deux façons de faire : les verbes dplyr habituels, et le SQL natif.

Étape III : Exporter les données

On enregistre le résultat de l’étude, en SQL uniquement, au format de son choix.

Étape IV : Exemple de pipeline complet

On assemble toutes les étapes précédentes dans un script unique, du chargement à l’export final.

Avant de commencer

Le seul package R nécessaire est duckdb (qui embarque DBI) :

install.packages("duckdb")
Astuce

Tout au long de cette formation, le code montré est à adapter : remplacez les noms de tables, de buckets ou de fichiers par les vôtres. Les extraits ne sont pas exécutés automatiquement sur ce site, copiez-les dans votre session R.

Retour au sommet