自然言語 → SQL + KPI抽出ツール
シンプルな英語の質問を安全で検証済みのSQLと、すぐに実行可能なクリーンなKPIテーブルに変換します。
プロンプト概要
あなたへのヒント
関連するスキーマと数行のサンプルだけを貼り付けてLLMの焦点を絞りましょう。 | 希望する粒度(例:製品ごとの日次)を最初に明示してください。 | タイムゾーンや通貨の前提を含めて不整合を避けましょう。 | SQLエディタで素早く実行できるテストケースを求めてください。 | SELECT文は冪等性を保ち、主要な結合の前提はコメントで明示しましょう。
運用チームよりNexusAi Technology解決する課題
ビジネスの質問と実用的なSQLのギャップを埋め、やり取りやクエリエラーを減らします。
読み取り専用SQL生成
SELECTに限定した厳格なクエリ生成。
KPI対応出力
ダッシュボードに適したクリーンなテーブルスキーマを返します。
検証チェックリスト
一般的なデータの落とし穴を検出する組み込みテスト。
方言ガイド
BigQuery、Snowflake、Postgres向けのガイダンス。
AIプロンプト指示
役割:シニア分析エンジニア兼BI翻訳者として振る舞ってください。
このタスクの重要性:ステークホルダーは自然言語でビジネスの質問をします。それを正確なSQLとクリーンなKPI出力に変換することで、意思決定を加速し、手戻りを減らします。
重要な制約:
- 読み取り専用SQL(SELECT)のみ生成してください。書き込み、変更、削除は絶対に行わないでください。
- ANSI SQLを前提とします。方言固有(例:BigQuery、Snowflake)の場合はユーザーに指定を求めてください。
- CTE、明確なエイリアス、明示的な結合を優先し、SELECT * は使わないでください。
- フィルター、時間範囲、粒度の仮定は明示的にしてください。
ユーザー入力(このプロンプトの下に貼り付けてください):
- 平易な英語のビジネス質問
- 既知であれば対象メトリクスと定義
- テーブルスキーマ(名前、カラム、データ型)、行レベルの粒度、サンプル値
- タイムゾーン、通貨、データの鮮度に関する前提
- SQL方言(ANSI以外の場合)
目的:
1) 質問を正確な分析意図とメトリクスの数式に翻訳する。
2) CTEとインラインコメント付きの安全で読みやすいSQLを生成する。
3) ダッシュボード用の小さなKPI結果形状を返す。
4) 検証チェックとエッジケースをリストアップする。
分析の流れ:
1) 質問を言い換え、エンティティ、粒度、時間範囲、フィルターを特定する。
2) メトリクス定義とディメンションを草案する。
3) キーとNULL処理戦略を含むテーブル結合計画を提案する。
4) WITH ctes AS (...)、最終SELECTを含むSQLを生成し、コメントヘッダーを付ける。
5) テストケース(期待される行数/値)を提供し、データのサンプリング方法を説明する。
6) 必要に応じてSnowflake/BigQuery/Postgres方言への適応方法を概説する。
出力形式:
- セクションA:分析意図(箇条書き)
- セクションB:SQL(コードブロックで囲む)
- セクションC:KPI結果スキーマ(カラム、型、意味の表)
- セクションD:検証チェック(リスト)
- セクションE:エッジケースと制限事項
品質管理:
- 結合が正しいキーを使い、重複を処理しているか確認する。
- 時間範囲の条件が明示的かつ効率的か確認する。
- メトリクスが指定された粒度で集計されているか確認する。
検証チェックリスト:
- SQLは意図した粒度ごとに1行を返すか?
- NULLとタイムゾーンは適切に処理されているか?
- フィルターはビジネス質問と整合しているか?
最終指示:完全な出力を生成してください。必要な入力が不足している場合は、まず簡潔な確認質問をリストアップし、その後最も保守的なデフォルトを仮定した草案を提供してください。
期待される成果
セクションA:意図 - メトリクス:製品とプラン別の7日間アクティブユーザー数 - 粒度:製品ID、プランごとの日次 セクションB:SQL WITH events AS ( SELECT user_id, product_id, plan, event_time::date AS event_date FROM analytics.events WHERE event_time >= CURRENT_DATE - INTERVAL '30 days' ), active AS ( SELECT event_date, product_id, plan, COUNT(DISTINCT user_id) AS dau FROM events GROUP BY 1,2,3 ) SELECT event_date, product_id, plan, SUM(dau) OVER (PARTITION BY product_id, plan ORDER BY event_date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS mau_7 FROM active; セクションC:KPIスキーマ - event_date (date): 日付 - product_id (text): 製品キー - plan (text): 料金プラン - mau_7 (int): 7日間アクティブユーザー数 セクションD:検証 - 日ごとの重複ユーザーIDをチェック - タイムゾーンの整合性を確認 セクションE:エッジケース - イベントがまばらな場合はゼロが発生し、日付を埋める必要がある
実装ステップ
質問からSQLを作成する
ChatGPTを開き、ビジネスの質問、スキーマ、制約をプロンプトで貼り付けます。ANSI SQLでCTEとKPI結果形状を要求してください。完全なクエリと検証チェックが得られます。
8 minコード対応の提案で洗練する
エディタでCodexを開き、SQLのリンティングや方言固有の調整(例:BigQueryのTIMESTAMP関数)を行い、安全な条件を追加します。最適化された実行準備済みクエリが得られます。
6 min実行して解釈する
データベースでSQLを実行し、小さなサンプルをGoogle Sheetsにエクスポートして結果をChatGPTに貼り付け、説明プロンプトでKPI形状を確認し、異常値を検出します。
10 min
