13 points par GN⁺ 2025-04-25 | 2 commentaires | Partager sur WhatsApp
  • Instant SQL est un outil qui prévisualise les résultats en temps réel pendant la rédaction de requêtes SQL, afin d’accélérer l’écriture et le débogage des requêtes
  • Il permet de décomposer et d’analyser facilement des CTE complexes ou des expressions de colonnes, et de prévisualiser instantanément des suggestions d’édition basées sur l’IA, ce qui rend la rédaction et la modification des requêtes plus efficaces
  • Disponible dans MotherDuck et DuckDB Local UI, il permet aussi d’explorer en temps réel diverses sources de données externes grâce à DuckDB
  • Cela a été rendu possible grâce à une combinaison de technologies avancées, notamment la conception local-first de DuckDB, l’optimisation des performances, des stratégies de cache et le mapping du curseur basé sur l’AST
  • MotherDuck est un service cloud managé DuckDB qui fournit divers outils pour l’analyse de données

Présentation d’Instant SQL

  • Instant SQL est une nouvelle fonctionnalité qui met à jour les résultats des requêtes SQL en temps réel dès la frappe
  • Sans bouton d’exécution séparé, il permet de prévisualiser les résultats avec une latence nulle (zero-latency)
  • Il est actuellement disponible sur la plateforme MotherDuck et dans DuckDB Local UI

Pourquoi Instant SQL est nécessaire

  • Écrire du SQL, ce n’est pas seulement une question de syntaxe : l’essentiel est de comprendre les données et de formuler des questions
  • Jusqu’ici, il fallait passer par une boucle lente et répétitive : écrire la requête dans un éditeur, cliquer sur exécuter, puis attendre les résultats
  • Instant SQL transforme ce processus en un flux d’exploration immédiat et naturel

Fonctionnalités principales

  • Prévisualisation des résultats en temps réel pendant l’écriture

    • À chaque frappe dans une requête SQL, la prévisualisation du jeu de résultats est mise à jour en temps réel
    • De simples transformations aux agrégations complexes, l’exploration des données peut se faire sans interruption
  • Débogage en temps réel des CTE (expressions de table communes)

    • Il suffit de cliquer sur un CTE pour le visualiser instantanément
    • Les modifications sont immédiatement répercutées sur tous les nœuds dépendants, ce qui rend le débogage des CTE très simple
  • Décomposition des expressions de colonnes complexes

    • Il est possible de décomposer des expressions directement depuis la table de résultats afin d’identifier rapidement les erreurs
    • Cela permet d’identifier immédiatement des problèmes de logique ou de données
  • Prise en charge de multiples sources de données

    • La prévisualisation fonctionne avec toutes les sources prises en charge par DuckDB (tables DuckDB, fichiers parquet sur S3, Postgres, SQLite, MySQL, Iceberg, Delta, etc.)
    • La modélisation et l’exploration de données externes deviennent extrêmement rapides
  • Validation rapide des requêtes avant exécution finale

    • Après avoir affiné la requête à l’aide de la prévisualisation, on peut lancer l’exécution finale une fois satisfait
    • Cela réduit drastiquement le cycle écrire-exécuter-attendre en SQL
  • Combinaison avec les fonctions IA

    • En saisissant une commande en langage naturel sur le texte sélectionné, l’IA propose des modifications
    • Comme le résultat proposé peut être prévisualisé immédiatement, il est possible d’accepter des changements sans risquer d’erreur

Comment cela a été rendu possible

  • Technologie d’exécution de requêtes à très faible latence

    • Grâce à la conception local-first de DuckDB, il est possible d’obtenir rapidement des résultats directement sur le PC
    • L’architecture d’exécution duale de MotherDuck prend aussi en charge de grands volumes de données avec une faible latence
  • Technologie de réécriture de requêtes

    • En s’appuyant sur l’extension JSON de DuckDB, le système extrait et exploite l’AST (arbre syntaxique) des requêtes SELECT
    • En remplaçant certaines parties de la requête par des échantillons de données mis en cache localement, il devient possible d’obtenir une prévisualisation rapide
  • Système de cache intelligent

    • Des données prédites et mises en cache permettent de rendre les résultats dès la frappe
    • Grâce à différentes stratégies de cache, les résultats apparaissent avant même que l’utilisateur n’ait retiré ses doigts du clavier
  • Mapping curseur-arbre syntaxique

    • Une fonctionnalité a été développée pour associer précisément la position du curseur de l’utilisateur à un nœud SELECT spécifique dans l’AST
    • Même dans des requêtes complexes, il devient possible de ne prévisualiser que l’instruction SELECT en cours d’édition

Comment utiliser Instant SQL

  • Disponible en préversion publique dans MotherDuck et DuckDB Local UI
  • Une nouvelle fonction de modification basée sur des prompts est également proposée aux utilisateurs de MotherDuck

2 commentaires

 
aer0700 2025-04-26

C’est vraiment fascinant.

 
GN⁺ 2025-04-25
Commentaires sur Hacker News
  • J’ai vu l’auteur de cette fonctionnalité et de l’article de blog la présenter à la conférence DataCouncil, et il était clair que sa réalisation a demandé beaucoup de savoir-faire, de créativité et de minutie. Félicitations à Hamilton et à l’équipe de MotherDuck pour ce beau lancement
  • Il y a une excellente vidéo dans l’UI de DuckDB et sur MotherDuck
  • Ce serait encore mieux si SQL avait une syntaxe de pipe. SQL est excellent, mais son ordre n’est pas intuitif, et les CTE sont le seul moyen fiable de prévisualiser les résultats intermédiaires. Avec des pipes, chaque étape pourrait montrer clairement une sortie intermédiaire
    • Exemple :
      • 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
  • S’il y a des ingénieurs DuckDB ici, je veux vous dire que votre outil a été d’une aide immense dans mon travail en bioinformatique/biotech. Il offre la flexibilité et la simplicité qu’exigent les données biologiques, qui sont complexes et en évolution constante
  • Le fait que DuckDB n’ait pas de syntaxe de pipe comme kusto ou la syntaxe de requête en pipe de Google est une fonctionnalité cruciale qui manque
    • Pourquoi est-ce crucial ? D’abord, les LLM complètent le texte de gauche à droite. Rien que pour ça, c’est une fonctionnalité essentielle
    • Mais pour nous, humains, avec notre puissance de calcul plus limitée, la syntaxe de pipe permet un autocomplétion bien meilleure
    • La syntaxe de pipe est agréable à utiliser, et revenir à SQL est vraiment un moment décevant
  • J’espère que cela ne fonctionne pas avec les requêtes DELETE
  • J’adore vraiment parcourir les notebooks de DuckDB, et cette fonctionnalité les rend encore plus impressionnants. Mais le fait de ne pas pouvoir les partager, les exporter ou les commit dans un dépôt git est très limitant. Ils semblent être stockés dans la base de données DuckDB, avec même des versions historiques, mais en pratique on ne peut rien en faire
  • L’inspection des CTE est une révélation. J’y passe beaucoup trop de temps manuellement
  • Super outil, et encore plus formidable utilisé avec le projet Manifold pour SQL. Il offre une sécurité de type et un excellent support de la syntaxe native de DuckDB
  • Ça a l’air génial, mais j’aimerais voir la table complète que je veux interroger. Je commence presque toujours mes requêtes en lançant rapidement select * from table limit 10;, puis j’ajoute les colonnes et les jointures