サンプルの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で実行すること作成されました。 **)
これにより、クロードはスキーマ情報に基づいて以下のことができる:
-
自然言語クエリの理解
ユーザの自然言語クエリに現れるキーワードと DB スキーマのテーブル/カラム名を一致させる。
クエリで使用されている集約関数(SUM、AVG など)と条件(過去 1 年、上位 10 件など)を特定する。 -
SQL文の生成
特定されたテーブル/カラム、集約関数、条件を組み合わせて、正しい構文のSQL文を自動的に生成します。
必要に応じてテーブルJOINやサブクエリを使用する。 -
データ型を考慮する
列のデータ型(INT、VARCHAR、DATEなど)を考慮して適切な操作や比較を行う。
文字列を引用符で囲み、必要に応じて日付にデータベースに適した書式を使用する。 -
検証と改良
生成された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版」からの抜粋です。