コード不要!AIがSQLとグラフを自動生成するGenBIツール入門
WrenAIは、以下のような点で、ソフトウェアエンジニアの助けになります。
WrenAIを使えば、SQLのクエリを手動で書く必要がなくなります。自然言語で「先月の売上トップ10の顧客を教えて」と入力するだけで、適切なSQLクエリが自動生成されます。これにより、単純なデータ抽出やレポート作成にかかる時間を大幅に削減できます。
新しいプロジェクトやサービスで、データベースのスキーマや内容がまだ頭に入っていない場合でも、WrenAIが強力な味方になります。たとえば、「ユーザーテーブルの登録日ごとのユーザー数をグラフにして」と頼めば、テーブル構造を完璧に把握していなくても、瞬時にグラフが生成されます。
WrenAIは、SQLクエリだけでなく、グラフ(Text-to-Chart)の生成も可能です。これにより、BIツールや可視化ライブラリのコードを書く手間が省けます。特定のデータセットを可視化したいとき、複雑な設定をすることなく、すぐにグラフを作成できます。
WrenAIの導入は、いくつかのステップで行います。まず、Pythonのパッケージとしてインストールし、接続したいデータベースの認証情報を設定します。
pip install wrenai
この例では、BigQueryに接続する設定をします。認証情報を含むJSONファイル(credentials.json)を用意してください。
import os
from wrenai.database import BigQueryDatabase
# サービスアカウントキーのJSONファイルへのパスを設定
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "/path/to/your/credentials.json"
# BigQueryのデータベース接続を初期化
db = BigQueryDatabase(
project_id="your-gcp-project-id",
dataset_name="your-dataset-name"
)
次に、データベース接続とLLM(大規模言語モデル)のAPIキーを使って、エージェントを初期化します。ここでは、GoogleのLLMを利用する例を示します。
from wrenai import Agent
# Google AI Studioから取得したAPIキーを設定
os.environ["GOOGLE_API_KEY"] = "your-google-api-key"
agent = Agent(db=db)
これで、WrenAIを使う準備ができました。
架空のラーメン店「麺屋エンジニア」のデータベースを使って、WrenAIがどのように役立つかをコント形式で見てみましょう。
状況
ラーメン屋の店主「ラオウ」(本当はソフトウェアエンジニア)は、お客さんがどのメニューをよく注文しているか知りたがっています。
コード
# 自然言語で質問
query = "各ラーメンメニューの総売上を、売上が高い順に並べて。"
# WrenAIにSQLクエリを生成させる
sql_query = agent.generate_sql(query)
print("--- WrenAIが生成したSQL ---")
print(sql_query)
# WrenAIにデータを実行させて、結果を取得
results = db.run_query(sql_query)
print("\n--- ラーメンの売上ランキング ---")
print(results)
WrenAIが生成するSQLの例
SELECT
menu_name,
SUM(price) AS total_sales
FROM
orders
GROUP BY
menu_name
ORDER BY
total_sales DESC
ラオウの一言
「SQLを手で書かなくても、勝手にやってくれるなんて…!これで、ラーメン作りに専念できるぜ!」
状況
ラオウは、どの年代の顧客が一番多いのかを知りたくなりました。
コード
# 自然言語で質問
query = "顧客の年齢層別の顧客数を円グラフにして。"
# WrenAIにグラフを生成させる
chart = agent.generate_chart(query)
chart.save("customer_age_chart.html")
print("顧客の年齢層別データが、円グラフとして customer_age_chart.html に保存されました。")
ラオウの一言
「グラフまで自動で!?これはすごい!若いお客さんが多いのか、それともご年配が多いのか、一目でわかる!」
状況
ラオウは、売上データから何か新しい発見がないか、AIに尋ねてみることにしました。
コード
# 自然言語で洞察を求める
query = "最近の売上データから、何か面白い傾向や洞察を教えて。"
# WrenAIに分析と洞察を生成させる
insights = agent.generate_insights(query)
print("\n--- AIによるラーメン店の洞察 ---")
print(insights)
WrenAIからの返答(例)
「分析の結果、以下の洞察が得られました。
週末のランチタイム(12
00〜14
00)に、特に「特製つけ麺」の注文が急増しています。
雨の日は、「辛味噌ラーメン」の注文が増える傾向が見られます。
過去1ヶ月で、新規顧客の再来店率が上昇傾向にあります。」
ラオウの一言
「なるほど!雨の日に辛いものが食べたくなるのか…!よし、雨の日限定メニューを開発しよう!AI、ありがとう!」