13 puntos por GN⁺ 2024-03-23 | 1 comentarios | Compartir por WhatsApp

DuckDB emerge como el nuevo jq

  • El proyecto DuckDB es una base de datos tipo SQLite para aplicaciones de datos, e incluye la capacidad de importar diversos formatos de datos sin dependencias adicionales.
  • Puede leer y parsear archivos JSON directamente como tablas de base de datos, y esto también aplica a muchos otros formatos.
  • Al trabajar con JSON normalmente se usa jq, pero como la sintaxis compleja de jq puede ser menos cómoda que SQL para quienes ya la conocen, usar DuckDB resulta más práctico.
  • Por ejemplo, usando la API de GitHub para obtener en JSON la información de los repositorios de la organización golang, es posible obtener fácilmente con SQL estadísticas sobre los tipos de licencias open source.
  • Escribir sentencias SQL con DuckDB se puede hacer fácilmente incluso sin consultar la documentación, ya que usa una sintaxis similar a la de las funciones JSON de PostgreSQL.
  • DuckDB también soporta salida en JSON y, si hace falta, se puede usar jq para mostrar los resultados de forma más legible.
  • DuckDB puede importar no solo JSON, sino también diversos formatos de datos como CSV, parquet y archivos de Excel.
  • Si no necesitas almacenar los datos de forma persistente, puedes consultarlos sin crear tablas.
  • DuckDB puede leer JSON no solo desde archivos locales, sino también directamente desde una URL.

Opinión de GN⁺

  • DuckDB puede convertirse en una herramienta interesante para quienes realizan con frecuencia tareas relacionadas con análisis de datos. En especial, para personas familiarizadas con SQL, puede ser una alternativa potente para manejar datos JSON con facilidad.
  • El hecho de que DuckDB pueda leer datos JSON directamente simplifica el proceso de preprocesamiento de datos y ofrece la ventaja de reducir pasos de transformación separados al construir pipelines de datos.
  • Si el uso de DuckDB sigue expandiéndose, podría reducir la curva de aprendizaje y mejorar la productividad frente a herramientas tradicionales más complejas para análisis y procesamiento de datos.
  • Sin embargo, si DuckDB aún no es ampliamente conocido o no cuenta con suficiente apoyo de la comunidad, a los usuarios podría resultarles difícil encontrar soluciones cuando enfrenten problemas.
  • Otros proyectos open source que ofrecen funciones similares a DuckDB incluyen Apache Drill y PrestoDB, y también permiten consultas SQL sobre grandes conjuntos de datos.

1 comentarios

 
GN⁺ 2024-03-23
Comentarios de Hacker News
  • La combinación de jq y las herramientas básicas del shell

    • La sintaxis y el modelo de datos de jq son muy elegantes y potentes, pero la falta de una biblioteca estándar y ciertas rarezas de diseño pueden hacer que las tareas cotidianas se compliquen.
    • jq convierte bien los datos en texto línea por línea, por lo que se combina fácilmente con las herramientas del shell de Unix.
    • Por ejemplo, extraer licencias OSS de una lista de proyectos y contar cuántas veces aparece cada una se puede hacer de forma simple con curl ... | jq '.[].license.key' | sort | uniq -c.
  • Babashka y Clojure

    • Si te gustan Lisp y Clojure, vale la pena revisar Babashka.
    • Se ofrece un ejemplo de código que usa Babashka para procesar archivos JSON, agrupar datos y contarlos.
  • CLI local de ClickHouse

    • La CLI local de ClickHouse es muy rápida para analizar y consultar formatos como JSON y CSV.
    • Se la presenta como la "herramienta de consultas JSON más rápida del mundo" y como una pequeña utilidad para análisis de datos sin servidor.
  • Uso de jq, DuckDB y SQL

    • jq es ideal para tareas como filtrar, mapear y concatenar.
    • Por ejemplo, se puede usar jq para encontrar enlaces de descarga específicos o extraer el KUBE_CONFIG de un clúster de Kubernetes desde el estado de Terraform.
  • Consultas en Google Sheets

    • Es posible consultar datos públicos de Google Sheets de una manera similar a SQL.
  • Logging estructurado con una base de datos SQLite

    • Los eventos de log generados cada día pueden guardarse como objetos JSON, crear índices sobre campos específicos y luego consultarse con SQL.
  • Benthos

    • Benthos puede usarse para transformar datos y moverlos entre buses de mensajes, webhooks y bases de datos.
  • Nushell

    • Nushell es útil para la manipulación ad hoc de datos y para tareas generales de shell.
  • pq (prql-query)

    • Se creó pq para que trabajar con datos en la terminal fuera fácil y divertido, aprovechando DuckDB, DataFusion y PRQL.
    • Actualmente está archivado porque es difícil de mantener, pero la situación podría cambiar si aparece gente interesada en colaborar.
  • JSON y el uso de lenguajes de programación

    • No queda claro cuál es la ventaja frente a tratar JSON como una estructura de datos tipo hashmap dentro de un lenguaje de programación.
    • Si se quiere trabajar de forma interactiva, se puede usar un notebook o un REPL.