DuckDB

Découverte de DuckDB
Author

Ludovic Deneuville

🚧

Tip

Inspiré de la vidéo d’Eric Mauvière - Avec DuckDB, gavez-vous d’open data!

Shell

Exemple avec ces données :

FROM 'https://static.data.gouv.fr/resources/populations-legales-communales-2017-2021/20240122-151058/poplegales2017-2021.parquet'
LIMIT 10;
FROM 'https://static.data.gouv.fr/resources/populations-legales-communales-2017-2021/20240122-151058/poplegales2017-2021.parquet'
WHERE codgeo = '28088';
FROM 'https://static.data.gouv.fr/resources/populations-legales-communales-2017-2021/20240122-151058/poplegales2017-2021.parquet'
WHERE annee_rp = 2021 
AND LOWER(libgeo) NOT LIKE '%arrondissement%'
ORDER BY ptot DESC
LIMIT 20;

Bonus :

Exécutable

Télécharger duckdb.exe

FROM 'https://static.data.gouv.fr/resources/populations-legales-communales-2017-2021/20240122-151058/poplegales2017-2021.parquet'
SELECT SUM(pnum)
GROUP BY annee_rp
ORDER BY 1 DESC;

DBeaver

https://duckdb.org/docs/guides/sql_editors/dbeaver.html

  • Nouvelle connexion : DuckDB
    • Path : :memory:
  • Ouvrir la connexion
  • Ouvrir un éditeur SQL
 FROM 'https://static.data.gouv.fr/resources/populations-legales-communales-2017-2021/20240122-151058/poplegales2017-2021.parquet'
SELECT codreg,
       SUM(pmun) pop
 WHERE annee_rp = 2021
 GROUP BY ALL
 ORDER BY ALL;
  • Ajouter une ligne de total
FROM 'https://static.data.gouv.fr/resources/populations-legales-communales-2017-2021/20240122-151058/poplegales2017-2021.parquet'
SELECT codreg,
       SUM(pmun) pop
 WHERE annee_rp = 2021
 GROUP BY GROUPING SETS((codreg),())
 ORDER BY ALL; 

Jointure avec les noms de régions

FROM read_json_auto('https://geo.api.gouv.fr/regions');

FROM 'https://static.data.gouv.fr/resources/populations-legales-communales-2017-2021/20240122-151058/poplegales2017-2021.parquet'
JOIN read_json_auto('https://geo.api.gouv.fr/regions') ON (codreg=code)
SELECT codreg,
       nom,
       SUM(pmun) pop
 WHERE annee_rp = 2021
 GROUP BY GROUPING SETS((codreg, nom),())
 ORDER BY ALL;

Remplacer les NULL de la dernière ligne

WITH popreg AS(
    FROM 'https://static.data.gouv.fr/resources/populations-legales-communales-2017-2021/20240122-151058/poplegales2017-2021.parquet'
    JOIN read_json_auto('https://geo.api.gouv.fr/regions') ON (codreg = code)
    SELECT codreg,
           nom,
           SUM(pmun) pop
     WHERE annee_rp = 2021
     GROUP BY GROUPING SETS((codreg, nom),())
     ORDER BY ALL
 )
FROM popreg
SELECT * REPLACE(IFNULL(codreg, 'FR') AS codreg, IFNULL(nom, 'France') AS nom);