先日、あるお客様向けに以下の資料を用いたハンズオンワークショップを実施しました。
構成や資料の準備、座学は私が行ったのですが、ハンズオン自身はお客様のデータを使ったこともあり、お客様にリードいただきました。結果として非常に興味深い内容になりましたので、ここでは公開されているデータを用いてハンズオンの流れをまとめます。
ターゲット
これまでにBIやDWHを操作したことがある、これから取り組みたいと考えている方。
ユースケース
Databricksに格納されているテーブルを用いたデータ集計やレポーティング。
ワークショップの流れ
二年前であれば存在していなかった新機能を活用します。生成AIを活用することで、(ほとんど)SQLを記述することなしに、データ集計やレポート作成が可能になることを体験いただきます。
-
AI Playground
- 生成AIの挙動(同じインプットでも常に同じアウトプットにはならない、システムプロンプトの効果など)に慣れてもらう。
-
Databricks SQL + Databricksアシスタント
- SQL基礎の座学を実施しつつ、Databricksならほとんど日本語でタスクをこなせることを説明。
- CSVファイルの取り込みからカタログエクスプローラのオリエンテーション。
- アシスタントの力を借りながら売り上げデータに対するクエリーを洗練
- ビジュアライゼーション、ダッシュボード、フィルタの作成からダッシュボードの公開までをウォークスルー
-
Databricks AI/BI(Genieメイン)
- 上と同じデータを使ってGenieスペースを作成。
- アシスタントの力を借りても数十分かかっていた作業が、Genieなら数分で完遂できることを体感いただく。
AI Playground
AI Playgroundの画面のオリエンテーションを行ったら、早速自由に触っていただきます。
右上の + ボタンをクリックすると、問い合わせするモデルを横並びに表示させることができます。同時に複数のモデルに問い合わせができるので、結果を比較して翻訳の精度を高めることなどが可能です。
システムプロンプトでモデルの挙動をコントロールすることも可能です。
ここでは、以下を体験していただきます。
- モデルによって挙動が異なること、得手不得手があること
- 指示(システムプロンプト)によって、モデルの挙動をある程度制御できること
- 同じモデルに同じ問い合わせをした場合、必ずしも同じ回答が返ってくるわけではないこと
Databricks SQL + Databricksアシスタント
SQL座学
日本語でデータ分析ができるといえども、背後で生成されるSQLが何であるのかは感触を掴んでいただきたいと思います。
怖がらないでください。今日のハンズオンではアシスタントやGenieの力を借りて、SQLをほとんど記述することなしにデータ分析を行なっていただきます。
データの取り込み
ここでは、こちらで公開されている売り上げデータを使用します。CSVファイルをローカルにダウンロードします。
データを取り込む際には、Unity Catalogのカタログとスキーマ(データベース)を指定する必要があります。適当なものがない場合には、以下のSQLを実行して、自身のメールアドレスを用いたスキーマを作成しておきます。
DECLARE database_name = "takaakiyayoi_catalog." || regexp_replace(current_user(), '[\.@]', '_');
CREATE DATABASE IF NOT EXISTS IDENTIFIER(database_name);
SELECT database_name;
takaakiyayoi_catalog.takaaki_yayoi_databricks_com
サイドメニューのデータ取り込みをクリックし、テーブルを作成または変更をクリックします。
ダウンロードしたCSVをドラッグ&ドロップします。
プレビュー画面が表示されるので、既存のスキーマあるいは上のSQLで作成したスキーマを選択し、テーブルを作成をクリックします。
これでデータが取り込まれ、テーブルが作成されました。
カタログエクスプローラの画面をオリエンテーションします。
SQLエディタとアシスタント
サイドメニューからSQLエディタに移動します。
画面のオリエンテーションを行います。左上のアイコンからはカタログエクスプローラ同様にカタログ内のオブジェクトを一覧できること、エディタの右上のアシスタントボタンはエディタに記載されている内容にフォーカスして動作することを説明します。
前のステップで作成したテーブルを検索し、テーブル名を右クリックあるいは3点リーダーをクリックして表示されるメニューからtableパスをコピーをクリックします。これによって、テーブルの完全なパスtakaakiyayoi_catalog.takaaki_yayoi_databricks_com.sales_data_sample
がクリップボードにコピーされます。
次にエディタ右上のアシスタントボタンをクリックします。するとエディタ上部にプロンプト入力ボックスが表示されます。
プロンプトボックスにテーブルパスを貼り付けて、以下のように編集します。
takaakiyayoi_catalog.takaaki_yayoi_databricks_com.sales_data_sampleの内容を表示
プロンプトボックス右の送信ボタンを押します。
これで、指示に従ってSQLが下のエディタに挿入されます。承認を押して確定します。ここで、生成AIの性質上、期待しない結果が出てくることがあること、自分でやりたいことに応じて編集可能であることを説明します。
エディタ左上の 実行(1000) ボタンを押してSQLを実行します。
取得結果が表示されます。上記の1000は取得件数を1000件に絞っていることを意味しています。
実行ボタンの右の下向き矢印を展開してLIMIT 1000のチェックを解除すると全件取得することになりますが、ここでは解除しません。
またアシスタントを呼び出します。シンプルなSQLをベースにより複雑なSQLの構築をアシスタントに指示します。
上の結果を見ると、注文日がOrderDate
、売り上げがSales
であることがわかります。これらのカラムに対して処理を行います。以下のプロンプトを入力します。
OrderDateをyyyy-mm、Salesの合計
これによって、月毎のSalesの合計を計算するSQLが生成されるはずです。
前と同じように承認して実行します。
期待した通りに動いていますが、よく見ると並び順がメチャクチャです。さらにアシスタントに修正させましょう。
OrderDateの小さい順
これで並び順も綺麗になりました。ここまで、SQL自体は一行も書いていません。すべて日本語でアシスタントに指示することで集計処理を実現しています。
グラフの作成
ここまではいい感じに進んでいますが、表形式のデータを見ていても味気ないのでグラフを作成します。未加工の結果の右にある + をクリックし、可視化を選択します。
可視化の設定画面が開くので、Visualization type
でLineを選択します。
X column
でOrderDateを選択します。
Y columns
の下のAdd columnをクリックします。
TotalSalesを選択し、その右がSum(合計)になっていることを確認します。これで、右側に売上の推移を示す折れ線グラフが表示されるはずです。右下の保存をクリックします。
ダッシュボードの作成
SQLエディタの下部に作成したグラフが表示されます。これでグラフを作成することができましたが、ここまで来たらダッシュボードにして共有したいと考えることでしょう。なので、ここからダッシュボードを作成します。
上で追加したグラフのタイトルの右側の下向き矢印をクリックしてメニューを展開します。ダッシュボードに追加を選択します。
ダッシュボードの作成ダイアログが表示されます。
必要に応じてダッシュボードの名称を変更し、追加するグラフを選択します。クエリーを保存して作成をクリックします。
クエリー(とクエリーから作成したグラフ)の保存先を聞かれるので、場所を選択して保存します。
これでダッシュボードのドラフトが作成されます。
ドラッグでグラフの位置やサイズを変更することができます。グラフの部品を選択すると、右側に設定画面が表示されます。
ここでは、フィルターを追加してみます。特定の期間にフォーカスするために活用できます。画面下のツールバーの一番右のアイコンをクリックします。
フィルターウィジェットの配置場所が選択できるようになるので、好きな場所に配置します。
配置したらサイズを調整します。
右側に設定画面が表示されていますので、ここで設定を行います。
- 複数の値を選択できるように、単一値から複数の値に変更します。
- フィルタリングの対象となるフィールド(列)を選択します。フィールドの右の + をクリックして、OrderDateを選択します。これで、OrderDateにフィルターを適用できるようになります。
このように2011年のデータのみにフォーカスすることができます。
ダッシュボードの公開
ここまでダッシュボードの設定を行ってきましたが、このダッシュボードは下書きの状態です。他のユーザーが参照できるようにするには、ダッシュボードを公開する必要があります。
画面右上の公開ボタンをクリックします。
公開設定のダイアログが表示されます。
まず、一番上の資格情報です。これは、ダッシュボードを参照する際に誰の資格情報を用いるのかを設定するものです。
- デフォルトの資格情報を埋め込むは、ダッシュボードを作成しているあなたの資格情報をダッシュボードに埋め込むことを選択します。これは、仮に参照ユーザーがダッシュボードでアクセスしているテーブルにアクセス権を持っていなかったとしても、ダッシュボードを作成したあなたがアクセス権を持っていれば、そのユーザーはダッシュボードを経由してそのテーブルデータを参照できることを意味します。プロトタイピングや機密性の低いデータを取り扱っている際にはこちらのモードでも大きな問題はありません。
- しかし、機密性の高いデータを取り扱っており、厳密な権限管理を実現したいのであれば、もう一つの認証情報を埋め込まないを選択すべきです。これによって、ダッシュボードの参照者自身の権限でテーブルにアクセスすることを強制できます。
公開をクリックすると、公開するダッシュボードにアクセスできるユーザーを選択する画面に遷移します。どのユーザー、グループにどのような権限を与えるのかを設定します。
設定したら右上の✖︎をクリックします。公開状態のダッシュボードに遷移します。
下書きに戻るには、画面上部中央のドロップダウンから下書きを選択します。
ここまでで、以下を実施してきました。
- CSVファイルを取り込んでテーブルを作成
- アシスタントを活用したテーブルへの問い合わせ
- グラフ、ダッシュボード、フィルタの作成、ダッシュボードの公開
このような取り組みをもっと簡単にできないでしょうか?そこで、Genieの出番です。魔神の力を借りましょう。
AI/BI Genie
サイドメニューからGenieにアクセスします。画面右上のNewをクリックします。
Genieとやり取りするには、Genieスペースという部屋を作成します。ここで、Genieが分析に行う際に参照するテーブルなどを設定します。
スペースの名前、SQLの実行で使用するSQLウェアハウス、そしてテーブルを設定します。テーブルは前のステップで使用したものと同じテーブルを選択します。
画面右下のSaveをクリックすると、あなたのGenieスペースが作成されます。
右下のプロンプトボックスに問い合わせを入力することで、Genieが分析を行なってくれます。
月別の売り上げの推移
Genieは対話型で動作します。質問が不明瞭な場合にはGenieから質問されることもあります。やり取りを通じて分析結果を取得します。
集計結果などデータを取得した際には、その下にクイックにグラフを作成するためのボタンが表示されます。折れ線グラフをクリックします。
SQLエディタを使用した際には少なくとも10分以上要した作業が今回は数分で完了しました。
また、GenieにはAI Playgroundで触れたシステムプロンプト相当の機能もあります。画面右の指示のアイコンをクリックします。ここに表示されるボックスに指示を入力することで、Genieの挙動をカスタマイズすることができます。
例えば、以下のような指示文を入れます。
- あなたは売り上げデータの日本人の専門家です。質問に対して日本語で回答します。
- 結果は必ず1000で割ってください。
こうすることで、あなたのやりたいことに合わせたGenieを活用できるようになります!