13 puntos por GN⁺ 2025-04-25 | 2 comentarios | Compartir por WhatsApp
  • Instant SQL es una herramienta que previsualiza resultados en tiempo real mientras escribes consultas SQL, acelerando la creación y depuración de consultas
  • Permite descomponer y analizar fácilmente CTE complejos o fórmulas de columnas, y también previsualizar al instante sugerencias de edición basadas en IA, haciendo más eficiente la escritura y modificación de consultas
  • Está disponible en MotherDuck y DuckDB Local UI, y gracias a DuckDB permite explorar en tiempo real incluso diversas fuentes de datos externas
  • Fue posible gracias a la combinación de tecnologías avanzadas de DuckDB, como su diseño local-first, optimización de rendimiento, estrategias de caché y mapeo del cursor basado en AST
  • MotherDuck es un servicio en la nube administrado de DuckDB que ofrece diversas herramientas para análisis de datos

Introducción a Instant SQL

  • Instant SQL es una nueva función que actualiza en tiempo real los resultados de una consulta SQL en el mismo momento en que escribes
  • Sin necesidad de un botón de ejecución, permite previsualizar resultados con latencia cero
  • Actualmente está disponible en la plataforma MotherDuck y en DuckDB Local UI

Por qué se necesita Instant SQL

  • Al escribir SQL, lo importante no es la sintaxis, sino entender los datos y formular preguntas
  • Antes, era obligatorio pasar por un ciclo lento: escribir la consulta en un editor de texto, presionar ejecutar y esperar el resultado
  • Instant SQL transforma ese proceso en un flujo de exploración inmediato y natural

Funciones principales

  • Previsualización de resultados en tiempo real mientras escribes

    • Cada vez que escribes una consulta SQL, la vista previa del conjunto de resultados se actualiza en tiempo real
    • Permite continuar la exploración de datos sin interrupciones, desde transformaciones simples hasta agregaciones complejas
  • Depuración en tiempo real de CTE (expresiones de tabla comunes)

    • Puedes hacer clic en un CTE para visualizarlo al instante
    • Los cambios se reflejan de inmediato en todos los nodos dependientes, lo que facilita mucho la depuración de CTE
  • Descomposición de fórmulas complejas de columnas

    • Permite desglosar fórmulas desde la tabla de resultados para encontrar rápidamente errores en fórmulas de columnas
    • Ayuda a identificar de inmediato problemas en la lógica de la fórmula o en los datos
  • Compatibilidad con diversas fuentes de datos

    • Permite previsualizar cualquier fuente compatible con DuckDB (tablas de DuckDB, archivos parquet en S3, Postgres, SQLite, MySQL, Iceberg, Delta, etc.)
    • Hace que el modelado y la exploración de datos externos sean mucho más rápidos
  • Validación rápida de consultas antes de la ejecución final

    • Después de ajustar la consulta mediante la vista previa, si el resultado te convence, puedes hacer la ejecución final
    • Reduce de forma drástica el ciclo de escribir SQL, ejecutar y esperar
  • Integración con funciones de IA

    • Si ingresas una instrucción en lenguaje natural sobre el texto seleccionado, la IA propone modificaciones
    • Puedes previsualizar al instante el resultado sugerido y aceptar cambios sin riesgo de cometer errores

Cómo fue posible

  • Tecnología de ejecución de consultas de ultra baja latencia

    • Gracias al diseño local-first de DuckDB, es posible obtener resultados rápidos directamente en la PC
    • La arquitectura de ejecución dual de MotherDuck también permite trabajar con grandes volúmenes de datos con baja latencia
  • Tecnología de reescritura de consultas

    • Aprovecha la extensión JSON de DuckDB para extraer y usar el AST (árbol de sintaxis) de consultas SELECT
    • Sustituye partes de la consulta por datos de muestra en caché local, lo que permite una vista previa rápida
  • Sistema de caché inteligente

    • Usa una caché de datos anticipada para renderizar resultados en cuanto se presiona una tecla
    • Con varias estrategias de caché, los resultados aparecen incluso antes de que el usuario levante los dedos del teclado
  • Mapeo entre cursor y árbol de sintaxis

    • Se desarrolló una función que asigna con precisión la posición del cursor del usuario a un nodo SELECT específico dentro del AST
    • Incluso en consultas complejas, permite seleccionar y previsualizar solo la sentencia SELECT en la que el usuario está trabajando

Cómo usar Instant SQL

  • Está disponible como vista previa pública en MotherDuck y DuckDB Local UI
  • La nueva función de modificación basada en prompts también está disponible para usuarios de MotherDuck

2 comentarios

 
aer0700 2025-04-26

Esto está realmente increíble.

 
GN⁺ 2025-04-25
Comentarios en Hacker News
  • Vi al autor de esta función y de la publicación del blog presentarla en la conferencia DataCouncil, y se notaba que hubo mucha artesanía, creatividad y cuidado en su construcción. Felicitaciones a Hamilton y al equipo de MotherDuck por este gran lanzamiento
  • Hay un video genial en DuckDB UI y MotherDuck
  • Sería aún mejor si SQL tuviera sintaxis de pipes. SQL es excelente, pero su orden no es intuitivo, y los CTE son la única forma confiable de previsualizar resultados intermedios. Con pipes, cada etapa podría mostrar claramente su salida intermedia
    • Ejemplo:
      • FROM orders
      • WHERE order_date >= '2024-01-01'
      • AGGREGATE SUM(order_amount) AS total_spent GROUP BY customer_id
      • WHERE total_spent > 1000
      • INNER JOIN customers USING(customer_id)
      • CALL ENRICH.APOLLO(EMAIL > customers.email)
      • AGGREGATE COUNT(*) high_value_customer GROUP BY company.country
  • Si hay algún ingeniero de DuckDB leyendo esto, quiero decirles que su herramienta ha sido de enorme ayuda para mi trabajo en bioinformática/biotecnología. Tiene la flexibilidad y simplicidad que exigen los datos biológicos, que son complejos y cambian constantemente
  • Que DuckDB no tenga sintaxis de pipes como kusto o la sintaxis de consultas con pipes de Google es una ausencia fatal de funcionalidad
    • ¿Por qué es una función fatal? Para empezar, los LLM completan texto de izquierda a derecha. Solo eso ya la vuelve una función fatal
    • Pero para nosotros, los humanos con menos poder de cómputo, la sintaxis de pipes permite una autocompletación de código mucho mejor
    • La sintaxis de pipes da gusto usarla, y volver a SQL es realmente un momento decepcionante
  • Espero que esto no funcione con consultas DELETE
  • Realmente me encanta explorar los notebooks de DuckDB, y esta función los hace aún mejores. Pero el hecho de que no se puedan compartir, exportar o hacer commit a un repositorio de git es muy limitante. Parece que se guardan en la base de datos de DuckDB, e incluso que se conservan versiones históricas, pero en realidad no se puede hacer nada con eso
  • La inspección de CTE es una maravilla. He gastado demasiado tiempo haciéndolo manualmente
  • Gran herramienta, y todavía mejor si se usa junto con el proyecto Manifold para SQL. Ofrece type safety y un excelente soporte para la sintaxis nativa de DuckDB
  • Se ve genial, pero quiero poder ver la tabla completa que voy a consultar. Siempre empiezo una consulta ejecutando rápidamente select * from table limit 10; y luego agrego columnas y joins