13 points par GN⁺ 2024-03-23 | 1 commentaires | Partager sur WhatsApp

DuckDB s’impose comme le nouveau jq

  • Le projet DuckDB est une base de données comparable à SQLite pour les applications de données, avec la capacité d’importer divers formats de données sans dépendance supplémentaire.
  • Il peut lire et analyser directement des fichiers JSON comme des tables de base de données, et cela s’applique aussi à de nombreux autres formats.
  • Pour travailler avec du JSON, on utilise généralement jq, mais comme la syntaxe complexe de jq est moins familière que SQL, utiliser DuckDB peut être plus pratique.
  • Par exemple, en utilisant l’API GitHub pour récupérer en JSON les informations sur les dépôts de l’organisation golang, on peut obtenir simplement en SQL des statistiques sur les types de licences open source.
  • Avec DuckDB, écrire des requêtes SQL est facile même sans consulter la documentation, et la syntaxe utilisée ressemble aux fonctions JSON de PostgreSQL.
  • DuckDB prend aussi en charge la sortie en JSON, et si nécessaire, on peut utiliser jq pour formater joliment le résultat.
  • DuckDB peut importer non seulement du JSON, mais aussi divers formats comme CSV, parquet et les fichiers Excel.
  • S’il n’est pas nécessaire de stocker les données de manière persistante, on peut les interroger sans créer de table.
  • DuckDB peut lire du JSON directement depuis une URL, et pas seulement depuis des fichiers locaux.

L’avis de GN⁺

  • DuckDB peut être un outil intéressant pour les utilisateurs qui effectuent souvent des tâches liées à l’analyse de données. En particulier, pour les personnes à l’aise avec SQL, il peut devenir une alternative puissante pour manipuler facilement des données JSON.
  • Le fait que DuckDB puisse lire directement des données JSON simplifie le prétraitement des données et présente l’avantage de réduire les étapes séparées de transformation dans la construction de pipelines de données.
  • Si l’usage de DuckDB se diffuse, il pourrait réduire la courbe d’apprentissage par rapport aux outils existants plus complexes pour l’analyse et le traitement des données, tout en améliorant la productivité.
  • Cependant, si DuckDB reste encore peu connu ou si le support de la communauté n’est pas suffisant, il peut être difficile pour les utilisateurs de trouver des solutions lorsqu’ils rencontrent des problèmes.
  • Parmi les autres projets open source offrant des fonctionnalités similaires à DuckDB, on peut citer Apache Drill ou PrestoDB, qui prennent eux aussi en charge les requêtes SQL sur de grands jeux de données.

1 commentaires

 
GN⁺ 2024-03-23
Avis Hacker News
  • Combinaison de jq et des outils shell de base

    • La syntaxe et le modèle de données de jq sont très élégants et puissants, mais sa bibliothèque standard est limitée et certains choix de conception sont maladroits, ce qui peut compliquer les tâches du quotidien.
    • jq convertit très bien les données en texte ligne par ligne, ce qui le rend facile à combiner avec les outils shell Unix.
    • Par exemple, extraire les licences OSS d'une liste de projets et compter leur fréquence d'utilisation peut se faire simplement avec curl ... | jq '.[].license.key' | sort | uniq -c.
  • Babashka et Clojure

    • Si vous aimez Lisp et Clojure, cela vaut la peine de jeter un œil à Babashka.
    • Un exemple de code est fourni pour traiter un fichier JSON, regrouper les données et les compter avec Babashka.
  • CLI local de ClickHouse

    • Le CLI local de ClickHouse est très rapide pour parser et interroger des formats comme JSON et CSV.
    • Il est présenté comme « l'outil de requête JSON le plus rapide du monde » et comme un petit outil d'analyse de données serverless.
  • Utilisation de jq, DuckDB et SQL

    • jq est idéal pour des opérations comme le filtrage, le mapping et la concaténation.
    • Par exemple, il peut être utilisé pour trouver un lien de téléchargement précis ou extraire le KUBE_CONFIG d'un cluster Kubernetes depuis un état Terraform.
  • Requêtes Google Sheets

    • Les données publiques de Google Sheets peuvent être interrogées d'une manière proche de SQL.
  • Journalisation structurée avec une base de données SQLite

    • Les événements de log générés chaque jour peuvent être stockés sous forme d'objets JSON, avec des index créés sur certains champs afin de permettre des recherches via des requêtes SQL.
  • Benthos

    • Benthos peut être utilisé pour la transformation de données et pour déplacer des données vers des bus de messages, des webhooks et des bases de données.
  • Nushell

    • Nushell est utile pour les manipulations de données ponctuelles et les tâches shell générales.
  • pq (prql-query)

    • pq a été créé pour rendre le travail sur les données dans le terminal simple et agréable en s'appuyant sur DuckDB, DataFusion et PRQL.
    • Le projet est actuellement archivé car sa maintenance est difficile, mais la situation pourrait changer si des personnes souhaitent collaborer.
  • JSON et l'utilisation des langages de programmation

    • L'intérêt n'est pas clair par rapport au fait de manipuler du JSON comme une structure de données de type table de hachage dans un langage de programmation.
    • Si vous souhaitez travailler de façon interactive, vous pouvez utiliser un notebook ou un REPL.