13 ポイント 投稿者 GN⁺ 2025-04-25 | 2件のコメント | WhatsAppで共有
  • Instant SQLは、SQLクエリの作成中に結果をリアルタイムでプレビューし、クエリ作成とデバッグを高速化するツール
  • 複雑なCTEやカラム式を簡単に分解・分析でき、AIベースの編集提案も即座にプレビューできるため、クエリの作成と修正がより効率的
  • MotherDuckDuckDB Local UIで利用でき、DuckDBを基盤としてさまざまな外部データソースまでリアルタイムに探索可能
  • DuckDBのローカルファースト設計と性能最適化、キャッシュ戦略、ASTベースのカーソルマッピングなどの高度な技術の組み合わせによって実現
  • MotherDuckは、データ分析向けのさまざまなツールを提供するマネージドDuckDBクラウドサービス

Instant SQLの紹介

  • Instant SQLは、SQLクエリの結果を入力と同時にリアルタイムで更新する新機能
  • 別途実行ボタン(run button)を押さなくても、**待ち時間0秒(zero-latency)**で結果をプレビューできる
  • 現在はMotherDuckプラットフォームとDuckDB Local UIで利用可能

なぜInstant SQLが必要なのか

  • SQL作成で重要なのは構文ではなく、データを理解し、問いを組み立てる過程
  • 従来はテキストエディタにクエリを書き、実行ボタンを押し、結果を待つという遅い反復作業が不可欠だった
  • Instant SQLはこの流れを、即時かつ自然に探索できる体験へと変える

主な機能

  • 書きながらリアルタイムで結果をプレビュー

    • SQLクエリを入力するたびに、結果セットのプレビューがリアルタイムで更新される
    • シンプルな変換から複雑な集計まで、データ探索を途切れなく進められる
  • CTE(共通テーブル式)のリアルタイムデバッグ

    • CTEをクリックして即座に可視化できる
    • 変更内容が即時にすべての依存ノードへ反映されるため、CTEのデバッグが非常に簡単になる
  • 複雑なカラム式の分解

    • カラム式のエラーを素早く見つけられるよう、結果テーブル上で式を分解できる
    • 式のロジックやデータの問題を即座に特定できる
  • 多様なデータソースをサポート

    • DuckDBが対応するすべてのソース(DuckDBテーブル、S3上のparquetファイル、Postgres、SQLite、MySQL、Iceberg、Deltaなど)をプレビューできる
    • 外部データのモデリングと探索を非常に高速に行えるようになる
  • 最終実行前の高速なクエリ検証

    • プレビューでクエリを磨き込み、満足できたら最終実行できる
    • SQL作成-実行-待機のサイクルを大幅に短縮してくれる
  • AI機能との組み合わせ

    • 選択したテキストに対して自然言語の命令を入力すると、AIが修正提案を行う
    • 提案結果を即座にプレビューできるため、ミスのリスクなく修正を受け入れられる

どうやって実現したのか

  • 超低遅延クエリ実行技術

    • DuckDBのローカルファースト設計により、PC上で直接すばやく結果を得られる
    • MotherDuckのデュアル実行アーキテクチャが、大規模データでも低遅延を支える
  • クエリ書き換え技術

    • DuckDB JSON拡張機能を活用して、SELECTクエリの**AST(構文木)**を抽出・活用する
    • クエリの一部をローカルキャッシュのサンプルデータに置き換えることで、高速なプレビューを可能にした
  • スマートキャッシュシステム

    • 事前に予測したデータキャッシュを使い、キー入力と同時に結果をレンダリングする
    • さまざまなキャッシュ戦略により、ユーザーが指を離す前に結果が表示される
  • カーソル-構文木マッピング

    • ユーザーのカーソル位置をAST内の特定のSELECTノードへ正確にマッピングする機能を開発した
    • 複雑なクエリ内でも、ユーザーが作業中のSELECT文だけを選んでプレビューを提供できる

Instant SQLの利用方法

  • MotherDuckまたはDuckDB Local UIで「公開プレビュー」として利用可能
  • 新しいプロンプトベースの修正機能もMotherDuckユーザーに提供される

2件のコメント

 
aer0700 2025-04-26

これは本当にすごく不思議ですね

 
GN⁺ 2025-04-25
Hacker Newsのコメント
  • DataCouncilカンファレンスでこの機能とブログ記事の著者が発表しているのを見たが、これを作り上げるのに多くの職人技、創造性、そして細やかな配慮が注ぎ込まれていることが分かった。HamiltonとMotherDuckチームの素晴らしいリリースに祝意を表したい
  • DuckDB UIとMotherDuckに素晴らしい動画がある
  • SQLにパイプ構文があればもっと良いと思う。SQLは素晴らしいが、その順序は直感的ではなく、中間結果をプレビューするにはCTEだけが信頼できる方法だ。パイプを使えば、各ステップが中間出力を明確に示せる
    • 例:
      • 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
  • DuckDBのエンジニアがいるなら、あなたたちのツールがバイオインフォマティクス/バイオテックにおける私の仕事に非常に大きな助けになっていることを伝えたい。生物学データ(複雑で、絶えず変化する)が求める柔軟性とシンプルさを備えている
  • DuckDBにkustoやGoogleのパイプクエリ構文のようなパイプ構文がないのは、致命的な機能欠落だ
    • なぜ致命的な機能なのか? まず、LLMは左から右へテキストを補完する。それだけでも致命的な機能だ
    • しかし、計算資源の少ない私たち人間にとっても、パイプ構文は(はるかに優れた)コード補完を可能にする
    • パイプ構文は作業していて楽しく、SQLに戻るのは本当にがっかりする瞬間だ
  • DELETEクエリでは動作しないことを願う
  • DuckDBのノートブックを触るのが本当に好きで、この機能はそれらをさらに素晴らしくしている。しかし、共有したり、エクスポートしたり、gitリポジトリにコミットしたりできないのは非常に制約が大きい。DuckDBデータベースに保存され、さらには履歴バージョンまで保存しているようだが、実際にはそれでできることが何もない
  • CTEの検査は驚きだ。手作業にあまりにも多くの時間を費やしている
  • 素晴らしいツールで、SQL向けのManifoldプロジェクトと組み合わせるとさらに素晴らしい。型安全で、ネイティブなDuckDB構文への優れたサポートを提供している
  • すごく良さそうだが、クエリしたいテーブル全体を見たい。私はいつもクエリを始めるとき、まず select * from table limit 10; をさっと実行してから列や結合を追加している