LoginSignup
1
0

自然言語クエリからSQLへ:生成AIがもたらすデータ活用革命

Posted at

サンプルのDBスキーマは、anthropic site で公開されているTypical DB schema (Customers, Products, Orders, Orders_Items, Reviews)を使用しています。

DBスキーマのウェブサイトからテキスト全体をコピーし、Googleドキュメントに貼り付ける。 そして、Googleドキュメントに保存された内容をPDFファイルとしてエクスポートします。 その後、このPDFファイルをクロード(またはChatGPT)にアップロードし、コマンドを与えます: "10個の自然言語クエリとそれに対応するSQLステートメントを含むテーブルを作成する" 簡単でしょう?

(**このERD図は、クロードに"アップロードされたDBスキーマ対応するERDを描くPythonコードを生成してくれ "と依頼し、クロードが生成したPythonコードをコピーし、ChatGPTで実行すること作成されました。 **)

これにより、クロードはスキーマ情報に基づいて以下のことができる:

  1. 自然言語クエリの理解
    ユーザの自然言語クエリに現れるキーワードと DB スキーマのテーブル/カラム名を一致させる。
    クエリで使用されている集約関数(SUM、AVG など)と条件(過去 1 年、上位 10 件など)を特定する。

  2. SQL文の生成
    特定されたテーブル/カラム、集約関数、条件を組み合わせて、正しい構文のSQL文を自動的に生成します。
    必要に応じてテーブルJOINやサブクエリを使用する。

  3. データ型を考慮する
    列のデータ型(INT、VARCHAR、DATEなど)を考慮して適切な操作や比較を行う。
    文字列を引用符で囲み、必要に応じて日付にデータベースに適した書式を使用する。

  4. 検証と改良
    生成されたSQL文が文法的に正しく、実行可能であることを検証する。
    セキュリティ・リスク(SQLインジェクションなど)となり得る内容を削除する。

自然言語クエリとそれに対応するSQL文の例を20個紹介します:

Claude Prompt: 「20の自然言語とそれに対応するSQL文を表にしてください。
クロードの答え

自然言語クエリ
平均注文金額が100ドル以上の顧客のメールアドレスを取得する

SQLステートメント
SELECT email
FROM Customers
WHERE customer_id IN (
SELECT customer_id
FROM Orders
GROUP BY customer_id
HAVING AVG(total_amount) >= 100
);

amazon.co.jp「Claude 3 AIの活用 :文章作成およびビジネス業務 Kindle版」からの抜粋です。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0