見出し画像

ChatGPTを使って業務で使えるSQLを作成した件について【非エンジニアがやってみた】

こんにちわ!虎の穴ラボというオタクな会社でWebマーケターをしている下野といいます。

社内では「何かと話題なChatGPTを業務で利用して、効率化しようぜ☆彡」的な流れがあり、タイトルの通りChatGPTを利用してSQLを作ってもらうチャレンジをしました。

結論として出力結果には満足しており、世の中の「SQLで分析したいけど腰が重いマーケター」や「簡単なSQL作成依頼をこなすのが面倒なエンジニア」にも役に立つのでは?と思い記事にしました。


どうやったらChatGPTでSQL出力できるか?

前置きは適度に、具体的な方法をさっそく話していこうと思います。

①~④のステップで実現可能とメイドちゃんが教えてくれるようです

全体の流れとしては「①役割」+「②テーブル構造など」+「③質問内容」=「④プロンプト完成」という感じです。

①ChatGPTに役割を与える

まずは定番の役割を与えてあげます。

SQLが得意なデータエンジニアにしてあげましょう。
(自分もこんな感じで、特定分野のプロに一瞬でなってみたいものです)

# 命令文
あなたはSQLが得意なデータエンジニアです。これからSQL作成を依頼します。日本語で回答してください。
下記の制約条件とデータベースのテーブル情報をもとにして、ユーザーの指示にもとづいてSQLを作成してください。

# 制約条件
* SQL文の途中では絶対に出力を止めないでください
* ユーザーの質問が不十分な場合は、SQLを作成する前に必ずそれを確認してください
* SQL文を出力した後は、WHERE条件を中心にその意味を完結に記載してください
* テーブルや項目が存在しないことによって正しくSQLを作れない場合は、SQLを作成する前に正直にそれを説明してください

# データベースの種類
Oracle

※データベースの種類は会社によって異なるので、適宜修正してください

②ChatGPTにテーブル構造を記憶させる

続いて、自社のテーブル構造を記憶させます。

当然、ChatGPTに作成してもらいたいSQLの内容に対応したテーブルを教える必要があります。

# それぞれの項目のデータの意味
## STUDENT_INFORMATION(生徒の情報が存在するテーブル)
student_id	(生徒番号)
student_first_name(生徒の苗字)
student_last_name(生徒の名前)

# 注意事項

## SQLにおける日付表記について
DATE値の書式はYYYY-MM-DD HH:MI:SSで記載すること

# 検索結果
{context}

# 質問
{question}

# 回答

「それぞれの項目のデータの意味」にはテーブル情報を羅列していきます。
実際にはかなり多くの内容を記載することになると思いますが、ここでは一例として生徒の情報が存在するテーブルを記載しています。

「注意事項」に関しては社内でSQLを出力している際の注意点などを記載しておけばChatGPTが対応してくれます。

最後の「検索結果、質問、回答」はそのまま記載でOKです。

テーブル構造は文字数上限に引っかからなければ、必要そうなのを入れ込んでしまえばOKです

③質問内容を作成する

最後に、作成して欲しいSQLの内容を文章にしましょう。

生徒番号、生徒の苗字、生徒の名前を抽出するSQLを作成してください。

④すべてをまとめて1つの文章に

①~③で作成された文章を結合すると、こんな下記のようになります。

# 命令文
あなたはSQLが得意なデータエンジニアです。これからSQL作成を依頼します。日本語で回答してください。
下記の制約条件とデータベースのテーブル情報をもとにして、ユーザーの指示にもとづいてSQLを作成してください。

# 制約条件
* SQL文の途中では絶対に出力を止めないでください
* ユーザーの質問が不十分な場合は、SQLを作成する前に必ずそれを確認してください
* SQL文を出力した後は、WHERE条件を中心にその意味を完結に記載してください
* テーブルや項目が存在しないことによって正しくSQLを作れない場合は、SQLを作成する前に正直にそれを説明してください

# データベースの種類
Oracle

# それぞれの項目のデータの意味
## STUDENT_INFORMATION(生徒の情報が存在するテーブル)
student_id	(生徒番号)
student_first_name(生徒の苗字)
student_last_name(生徒の名前)

# 注意事項

## SQLにおける日付表記について
DATE値の書式はYYYY-MM-DD HH:MI:SSで記載すること

# 検索結果
{context}

# 質問
{question}

# 回答


生徒番号、生徒の苗字、生徒の名前を抽出するSQLを作成してください。

早速この文章をChatGPTで実行してみると…

ChatGPTがSQLを出力してくれている!

今回はかなり簡単な内容のSQLでしたが、しっかりと出力してくれていますね。

SQLの意味も説明してくれるので、違和感がないかもここでチェックできます!

実際は数十個のテーブルをプロンプトにテンプレとして入れ込みます。ECサイトだと下記のようなSQL作成依頼を実行することで役に立つ数値を取得できそうですよね。

2024/1/1~2024/1/31における男性顧客の合計購入金額と数量を出力してください。
また、同期間における客単価の平均値と中央値も出力してください。

ちなみに、〇〇を購入したことがある~など複数の複雑な条件でSQLを作成してもらうことも可能です。

その際は依頼文章が簡潔にまとまっていないと、こちらの意図と異なる解釈をするパターンがあるので気を付けましょうね。
(ここは人間もAIも変わらないところかと思います)

いい感じで依頼していきましょう

実際、運用してどうだったか?

冒頭にも記載しましたが、かなり役に立ちました。今までは月に新しいSQLを10個ほど依頼する月もあったのですが、現在は月に2個程度しか依頼せずに済むようになりました。

【導入のメリット】
・自分の好きなタイミングでSQLを作成できるので、待ち時間が発生しない
・エンジニアさんにたくさんのSQL作成を依頼していたころに比べ、気負う部分が少なくなった

【導入のデメリット】
・なんでも作成できるわけではなく、かなり複雑な条件になる場合は従来と変わらずエンジニアさんに依頼する形式を取っている
(自分自身の質問の仕方が悪いのもありますが、長文になり複雑な条件になればなるほど、ChatGPTに上手く伝わらないものですね)

・作成したSQLを実行するとエラーが発生することも。ただ、エラー内容と一緒にChatGPTへ打ち込むと修正したSQLを作成してくれるので、運用でカバー可能

メリットとデメリットを理解したメイドちゃん
本当に理解しているかは謎であるが可愛いのでヨシ

毎回長いプロンプトを打たない方法もある

本記事で紹介しているプロンプトですが、テーブル情報が増えるほど長くなります。

毎回コピペするのも面倒だなぁという方に関しては「Open AIのアシスタントAPI」の利用を検討してみてください。

※専門的な内容になるので、なんだかよく分からない!という方はスルーしていただければOKです。

アシスタントAPIの機能を利用すれば、テーブル構造の情報などをChatGPTに打ち込まれている状態から会話がスタートするので、SQLに関する質問文だけ打てば回答を貰えるようになる!とイメージ頂けると分かりやすいかなと思います。

アシスタントAPIを利用せずとも全体の文章をコピペすればSQLを作成してもれるので、必須の項目ではありません。

本当はわかっていない時に聞くフレーズですね

虎の穴ラボのその他人気記事

同一著者の記事

可愛いメイドちゃんのスタンプはこちらから手に入ります!!(宣伝)

本noteで度々登場しているメイドちゃんのスタンプは下記URLから手に入ります!!

本当は無料配布にしたかったんですけど、
無料配布すると会社側に費用がかかりすぎるので断念…
なので、一番安いスタンプ価格にしてみました

文字が入っていない画像のみは虎の穴ラボの公式サイトから手に入りますよ👀

この流れで採用の宣伝もさせてください

現在虎の穴ラボはエンジニアを中心に積極採用中です。
2024年5月現在、マーケターとディレクターの募集は残り2枠となっています。

詳細は下記の採用情報からぜひ確認してみてください。

何卒よろしくお願いしますという感じのメイドちゃん

虎の穴ラボの福利厚生などについて

虎の穴ラボの魅力は何といっても「これからもずっとフルリモート」の宣言を出している点かと思います。

「フルリモート環境で働き続けたい!」という方にはピッタリの会社かと思いますので、ぜひ見ていってください。

遠慮しながらも採用記事をPRするメイドちゃん
もう少し引用記事が続くので、スクロールを応援するメイドちゃん
ここまでスクロールしてくれたことに感謝しつつも、
表情にだすのがやや恥ずかしなったので励ましてくれるメイドちゃん