
DatabricksにServiceNow AI Agentから読み取らせるRAGデータ環境を構築してZero Copy Connectorsで繋ぐ実装手順まとめ
ServiceNowのWorkflow Data FabricにはZero Copy Connectorsというコネクターが存在し、これによってさまざまなデータレイクやクラウド上の大量レコードデータをメモリ上で物理移動させずに高速に読み取りする機能があります。
Zero Copy Connectorsは、外部システムからデータをメモリ上のWorkflow Data Fabricテーブルに展開し読み取りアクセスできるようにします。この際にServiceNowが得意とするデータアクセス制御のACLにより、ユーザー側へ読み取り可能なデータ範囲を規制し安全なデータ利用環境を提供します。
※以下URLは、Australiaバージョンでサポートされるプライマリー・コネクター情報です。
続々とサポートされる接続先が増えていってます。Snowflake、Databricks、Amazon RedShiftとS3 Table、Google BigQuery、Oracle、Teradata、Apache Icebergなど・・。
Zero Copy Connectorsを利用するAI Agent技術については別途当ブログで紹介しようと思いますが、まずは接続検証をするにあたり、実際の接続環境を使いたいので、無償環境の払い出しが簡単で利用しやすいDatabrics上でのRAG(Retrieval-Augmented Generation)データ整備の初期手順を自分の備忘録かねて掲載したいと思います。
1.アカウント登録と無料トライアル環境の払い出し
以下、Databricksのトライアルサイトよりアカウント登録から無料トライアル環境の払い出しを行います。
※利用に際しては、DatabricksのFree Editionライセンス利用ポリシーに準拠ください。
アカウントは基本的にメールアドレスの登録で行います。実際に利用する
機能はFree Edition版の範囲になりますが、データを格納するテーブルやそのデータをZero Copy Connectors接続で高速読み取りを検証する構成としては十分です。

ServiceNow側のDatabricksコネクタについては、以下Docsを参照ください。
https://www.servicenow.com/docs/r/ja-JP/zurich/integrate-applications/workflow-data-fabric-hub/databricks-wdf.html
2.データのバルクアップロードによる登録
早速データ環境を作成してゆきます。
[+新規]メニューより、[データを追加またはアップロード]を選択します。

[テーブルを作成または変更]を選択します。

バルクでアップロードするファイル形式はExcel、CSV、jsonなど様々な様式がサポートされているようです。Excelデータをアップロードしてみます。

Databricksで独特なお作法であるカタログやスキーマ、テーブル名を指定してデータを追加します。
・カタログ:workspace
・スキーマ:default
・テーブル名:任意のテーブル名

簡単なデータ構造ですが、テーブルの作成およびデータの登録が完了しました。

3.権限付けの定義
ServiceNow側から接続するユーザーを限定せずに全ユーザーが全てのレコードデータを読み取りできるように権限を付与します。高速読み取り後の実際のデータ参照はServiceNow側のACLでデータアクセス制御できるようになるので、接続上での設定はこれで問題ありません。

読み取りの権限を付与します。

4.OAuthトークンキーの払い出し
続いて、認証周りの設定を行ってゆきたいと思います。ServiceNowインスタンスからセキュアな接続による認証を構成するために、OAuth認証を介してDatabricks側の起動サービスに接続を行う定義をしてゆきます。
※DatabricksのOAuth認証に関する情報はこちらを参照ください。
[設定]より、[IDとアクセス]からサービスプリンシパルの[管理]メニューを選択します。

接続を行わせるユーザーの設定を行います。
・サービスプリンシパル名:任意の名前
・ロールの付与:今回は管理者とユーザーの権限を付与しています。

続けて[シークレット]メニューより、OAuthのシークレット(トークンキー)を生成します。
・存続期間:任意の値で1~730の範囲の日数

OAuthシークレットキー(トークンキー)とOAuth クライアントIDが払い出されます。この値をメモ帳などにコピーして退避します。
※シークレットキーは1回しか表示されないので、扱いに注意ください。

5.接続設定情報の確認
ServiceNowインスタンスからZero Copy ConnectorsのSQLクラスタから接続行う接続先情報をSQLウェアハウスから確認し取得します。ここで接続情報として、メモ帳にコピーしておきたい項目は以下の2つです。
・HTTPパス
・JDBC URL

これで設定は完了しました。
6.Workflow Data Fabric Hubからの接続確認
Zero Copy Connectorsで接続できる環境が整いましたので、さっそくServiceNowのWDF管理画面でDatabricksへの接続を行わせてみようと思います。
開発インスタンス上でまずは、Storeより、[Workflow Data Fabric]と[Databricksコネクタ]の適応リクエストよりインストールを行っておきます。
ファイルナビゲータメニューの[Workflow Data Fabricハブ]を開き、利用可能なコネクタから[Databricks]を選択します。

ここで、以下図のように接続設定情報を入力します。
・接続ラベル:任意の名前
・OAuth Client ID:シークレット払い出し時のクライアントID
・OAuth secret:シークレット払い出し時のシークレットキー
・Catalog name:Workspace
・Connection URL:SQLウェアハウスのJDBC URL
・Warehouse or compute path:SQLウェアハウスのHTTPパス

入力後に、[Save and Connection]ボタンで設定保存と接続を実施します。
接続が成功すると、以下のようにDatabricks側のテーブルがデータ資産として参照できるようになります。

続けて、Databricksのデータを格納するフィールド(カラム)のマッピング定義を行います。

設定後に、[リストを開く]を選択します。

メモリ上で、Databricksのレコードデータを読み取りできるようになりました。

如何でしたでしょうか。ServiceNowインスタンスからDatabricks上のRAGデータを参照させる接続はこうした設定で実装可能です。
今回は接続を行わせる接続設定回りについての設定手順と技術情報を纏めてみました。物理移動なしに大量データの高速読み取りアクセスができるメリットは大きいと思えます。様々なデータ利用ケースにてご参考にして頂ければ幸いです。