Transformez et exportez les données

Maintenant que vos tables sont stockées dans une base de données DuckDB, vous pouvez effectuer vos transformations de données.

Regardez cette vidéo pour visualiser ces deux dernières étapes clés pour gérer vos données avec DuckDB.

Transformez les données

Votre objectif est d’évaluer la popularité des langages de programmation utilisés sur un projet GitHub.

Maintenant que vous disposez de vos tables source (GitHub et popularité sur StackOverflow), vous allez croiser les données en une seule requête SQL afin d’analyser leur utilisation et leur popularité.

  1. Pour cela, vous pouvez utiliser la requête suivante :

CREATE TABLE openclassrooms.duckdb_language_stats AS (
WITH normalized_repo AS (
    SELECT 
        language, 
        bytes, 
        SUM(bytes) OVER () AS total_bytes,
        (bytes * 100.0 / SUM(bytes) OVER ()) AS repo_usage_percentage
    FROM openclassrooms.repo_languages
)
SELECT 
    r.language,
    r.repo_usage_percentage,
    COALESCE(s.popularity_percentage, 0) AS stack_overflow_popularity
FROM normalized_repo r
LEFT JOIN openclassrooms.stack_overflow_popularity s 
ON LOWER(r.language) = LOWER(s.language)
ORDER BY r.repo_usage_percentage DESC
);

Comment peut-on décomposer la requête de transformation ? 

  • normalized_repo (sous-requête) : calcule la part de chaque langage en pourcentage des octets utilisés.  

  • COALESCE(s.popularity_percentage, 0): ce code remplace les valeursNULLpar 0dans la colonnes.popularity_percentage.

  • LEFT JOIN: conserve tous les langages de GitHub, même ceux absents de Stack Overflow. 

  • ORDER BY : trie les résultats par langage sur GitHub.

2. Vérifions maintenant le résultat dans la nouvelle table créée : 

FROM openclassrooms.duckdb_language_stats;;

Et voici le résultat :

Capture d'écran du résultat
Capture d'écran du résultat

Exportez les données

Lors d’un projet data, il est courant de transformer des jeux de données et de les exporter sous différents formats, notamment Parquet ou CSV afin de les partager ou de les présenter via d'autres outils.  

Avec DuckDB, l’exportation est très simple grâce à la commande COPY .. TO. 

Par exemple, pour exporter la table openclassrooms.duckdb_language_ststatistiquesen CSV, il suffit d’exécuter :  

COPY (SELECT * FROM openclassrooms.duckdb_language_stats) TO 'duckdb_language_stats.csv';

Cela génère un fichier CSV contenant exactement les mêmes données que la requête 

SELECT * FROM openclassrooms.duckdb_language_stats

Présentez les données 

Pour visualiser les résultats, vous pouvez utiliser divers outils de visualisation des données en fonction de vos besoins : 

Outils (Python et Business Intelligence)

Objectif principal

Streamlit

Création rapide de dashboards interactifs en Python.

Matplotlib / Seaborn

Personnalisation de graphiques en code natif (Python). 

Plotly 

Visualisations interactives et applications web en Python.  

Power BI

Solution Microsoft pour explorer et analyser les données. 

Tableau

Outil BI puissant avec interface glisser-déposer.  

Evidence

  • Outil open source permettant de créer des rapports et des dashboards à partir de fichiers Markdown et SQL.

  • Optimisé pour les workflows data modernes.

Rill 

Plateforme de BI en open source permettant d’explorer et d’analyser rapidement des données à grande échelle, avec un moteur analytique performant basé sur DuckDB.

Vous pouvez soit charger directement votre base DuckDB, soit exporter les données en CSV ou Parquet pour les utiliser avec ces outils.

Dans le cadre de votre mission, vous pouvez utiliser DuckDB pour afficher, par exemple, un bar chart (diagramme en barres) en ligne de commande :

SELECT 
    bar(repo_usage_percentage, 0, (SELECT MAX(repo_usage_percentage) FROM openclassrooms.duckdb_language_stats), 50) AS usage_chart, 
    bar(stack_overflow_popularity, 0, (SELECT MAX(stack_overflow_popularity) FROM openclassrooms.duckdb_language_stats), 50) AS popularity_chart, 
    language 
FROM openclassrooms.duckdb_language_stats 
ORDER BY repo_usage_percentage DESC;

Et voici le résultat : 

Capture d'écran du résultat
Capture d'écran du résultat

On peut en conclure que C++ domine largement l’usage dans DuckDB, mais reste moins populaire sur Stack Overflow, ce qui reflète son rôle de langage plus niche, utilisé principalement pour l’optimisation et les performances du moteur. À l’inverse, Python, bien plus populaire auprès des développeurs, est également présent dans le code source de DuckDB, mais de manière restreinte.

En résumé

  • JSON n'est pas conçu naturellement sous forme de colonnes, ce qui nécessite une transformation pour l'analyse de données.

  • DuckDB intègre des fonctionnalités avancées d’analyse et de structuration des données, commeUNPIVOTpour convertir des données JSON en format tabulaire exploitable.

  • DuckDB facilite l’exportation des résultats sous différents formats (CSV, Parquet) via la commandeCOPY … TO, permettant de partager les analyses avec d’autres outils sans conversion manuelle. 

L'outil DuckDB est un véritable couteau suisse pour tout Data Engineer. Quelle que soit votre stack data (écosystème de données), vous lui trouverez souvent une utilisation intéressante au quotidien.

N’hésitez pas à explorer davantage DuckDB en consultant le blog de MotherDuck, celui de DuckDB, ou encore la chaîne YouTube de MotherDuck.

Ever considered an OpenClassrooms diploma?
  • Up to 100% of your training program funded
  • Flexible start date
  • Career-focused projects
  • Individual mentoring
Find the training program and funding option that suits you best