every Tech Blog

株式会社エブリーのTech Blogです。

Databricks GenieではじめるText-to-SQL

はじめに

こんにちは。
株式会社エブリーの開発本部データ&AIチーム(DAI)でデータエンジニアをしている吉田です。

今回は、Text-to-SQLを実現するDatabricks Genieを紹介します。

Databricks Genie

Databricks Genieは、自然言語を利用してデータ分析が行えるサービスです。
あらかじめデータ、サンプルクエリ、Genieへの指示を登録しておくことで、Genieに対して自然言語でクエリを投げることができます。
これにより、SQLに詳しくない人でもデータ分析を行うことができます。

AI/BI Genie Space とは何ですか?

Genieを利用する

Genieを利用するためには、以下の手順が必要です。

  1. 利用するデータをUnity Catalogに登録する
  2. Genie Spaceを作成する
  3. Genieをチューニングする

今回は弊社が提供しているレシピ動画サービス、DELISH KITCHENのデータを模したサンプルデータを用意し、Genieを利用してみます。
サンプルデータはランダムに生成したもので、実際のデータとは異なります。

サンプルデータをUnity Catalogに登録する

サンプルデータは、以下のような構造です。

テーブル名 カラム 説明
user_master id
age
gender
recipe_master id
recipe_name
is_premium プレミアムレシピかどうか
viewed_video event_date
user_id
recipe_id
seconds 動画視聴時間
referrer_screen 直前に見た画面

Unity Catalogへの登録

Genieではカタログのメタデータを利用してクエリを生成するため、テーブル/カラムのコメントを登録しておく必要があります。
登録にはAI Generate機能を利用することでデータの内容から適切なコメントを生成できるため、利用すると便利です。

コメントの自動生成

Genie Spaceを作成する

Genie Spaceは、Genieの利用者がデータ分析を行うためのスペースです。
使用するテーブルやサンプルクエリ、使用するコンピュートリソースなどを指定して作成します。

Genie Spaceの初期設定

Genieをチューニングする

Genieに対して、クエリの生成精度を向上させるためのチューニングを行えます。
ドメイン知識を追加したり、回答形式を指定する、あらかじめ質問とSQLをセットで登録し学習させるなど、Genieの精度を向上させる方法があります。

チューニング

Genieでデータ分析をする

実際にGenieに対して、日本語で質問を投げてみます。
クエリの実行後、Show Generated Codeをクリックすると、Genieが生成したクエリを確認できます。

最初はシンプルな質問を投げてみます。

回答

よさそうです。
次はテーブルのJoinが発生する質問を投げてみます。

回答

よさそうです。
さらに複数のJoinが発生する質問を投げてみます。

回答

こちらも良さそうです。
では簡単な変換を伴う質問を投げてみます。

回答

うまくいきませんでした。
このように質問が正確に理解されない、または誤ったクエリを生成することがあります。
そういった場合はチューニングを行うことで精度を向上できます。
例えば以下のようなクエリを質問とセットで登録することで、Genieに正しいクエリを生成するよう学習させられます。

クエリと質問の登録によるチューニング

この状態で同様の質問をしてみます。

回答

今度は正常にクエリが生成されました。
このようにチューニングを行うことで、Genieの精度が向上します。

まとめ

今回はDatabricks Genieを利用して、自然言語でデータ分析を行う方法を紹介しました。
Databricks Genieを利用することで、SQLに詳しくない人でも質問を入力するだけでデータ分析を行うことができます。
これにより、データ分析の敷居が下がりデータ活用が進むことが期待されます。