ServiceNow インジェスト パイプラインを作成する
この記事では、 Databricks Lakeflowコネクトを使用して ServiceNow インジェストパイプラインを作成する方法について説明します。
始める前に
インジェスト パイプラインを作成するには、次の要件を満たす必要があります。
- 
ワークスペースでUnity Catalogが有効になっている必要があります。 
- 
サーバレス コンピュートは、ワークスペースで有効にする必要があります。 サーバレス コンピュートの要件を参照してください。 
- 
新しい接続を作成する予定の場合: メタストアに対する CREATE CONNECTION権限が必要です。コネクタが UI ベースのパイプライン オーサリングをサポートしている場合、管理者はこのページのステップを完了することで、接続とパイプラインを同時に作成できます。 ただし、パイプラインを作成するユーザーが API ベースのパイプライン オーサリングを使用している場合、または管理者以外のユーザーである場合、管理者はまずカタログ エクスプローラーで接続を作成する必要があります。 「管理対象取り込みソースへの接続」を参照してください。 
- 
既存の接続を使用する予定の場合: 接続オブジェクトに対する USE CONNECTION権限またはALL PRIVILEGESが必要です。
- 
ターゲット・カタログに対する USE CATALOG権限が必要です。
- 
既存のスキーマに対する USE SCHEMA権限とCREATE TABLE権限、またはターゲット・カタログに対するCREATE SCHEMA権限が必要です。
ServiceNow から取り込むには、「 Databricks への取り込み用に ServiceNow を構成する」を参照してください。
インジェスト パイプラインを作成する
必要な権限: 接続 USE CONNECTION または ALL PRIVILEGES 。
この手順では、インジェスト パイプラインを作成する方法について説明します。取り込まれた各テーブルは、同じ名前でストリーミングテーブルに書き込まれます。
- Databricks UI
- Databricks notebook
- Databricks CLI
- 
Databricksワークスペースのサイドバーで、 データ取り込み をクリックします。 
- 
[ データの追加 ] ページの [Databricks コネクタ ] で、[ ServiceNow ] をクリックします。 インジェスト ウィザードが開きます。 
- 
ウィザードの [インジェスト パイプライン ] ページで、パイプラインの一意の名前を入力します。 
- 
[宛先カタログ ] ドロップダウン メニューで、カタログを選択します。取り込まれたデータとイベント ログは、このカタログに書き込まれます。宛先スキーマは後で選択します。 
- 
ソース データへのアクセスに必要な資格情報を格納する Unity Catalog 接続を選択します。 ソースへの既存の接続がない場合は、[ 接続の作成 ] をクリックし、「 DatabricksインジェストのServiceNowの構成」で取得した認証の詳細を入力します。メタストアに対する CREATE CONNECTION権限が必要です。
- 
パイプラインの作成および続行 をクリックします。 
- 
「 ソース 」ページで、取り込むテーブルを選択し、「 次へ 」をクリックします。 [ すべてのテーブル ] を選択すると、コネクタはソース スキーマの既存テーブルと将来のテーブルをすべて宛先スキーマに書き込みます。パイプラインごとに最大 250 個のテーブルがあります。 
- 
宛先 ページで、書き込む Unity Catalog カタログとスキーマを選択します。 既存のスキーマを使用しない場合は、[ スキーマの作成 ] をクリックします。親カタログに対する USE CATALOG権限とCREATE SCHEMA権限が必要です。
- 
パイプラインを保存と続行 をクリックします。 
- 
(オプション) [設定 ] ページで、[ スケジュールの作成 ] をクリックします。宛先テーブルを更新する頻度を設定します。 
- 
(オプション)パイプライン操作の成功または失敗のEメール 通知を設定します。 
- 
パイプラインの保存と実行 をクリックします。 
- 
個人的なアクセス内部を生成し、後でノートブックに貼り付けることができるように、そのトークンをコピーします。 「ワークスペース ユーザー向けの個人アクセス アカウントの作成」を参照してください。 
- 
次のノートブックをワークスペースにインポートします。 
ServiceNow インジェスト パイプラインを作成する
- 
ノートブックで次の値を変更します。 セル 1: - api_token: 生成したパーソナル アクセス トークン
 セル 3: - 
name: パイプラインの名前
- 
connection_name: カタログエクスプローラ で作成した Unity Catalog 接続の名前 ( Catalog > External data > Connections )。ソースへの既存の接続がない場合は、作成できます。メタストアに対するCREATE CONNECTION特権が必要です。
- 
source_table: ソース テーブルの名前
- 
destination_catalog: 取り込まれたデータが含まれる宛先カタログの名前
- 
destination_schema: 取り込まれたデータを含む宛先スキーマの名前
- 
scd_type: 使用する SCD メソッド:SCD_TYPE_1またはSCD_TYPE_2。
- 
include_columns: 必要に応じて、インジェストに含める列のリストを指定します。このオプションを使用して列を明示的に含めると、パイプラインは将来ソースに追加される列を自動的に除外します。将来の列を取り込むには、それらをリストに追加する必要があります。
- 
exclude_columns: 必要に応じて、インジェストから除外する列のリストを指定します。このオプションを使用して列を明示的に除外すると、パイプラインには、今後ソースに追加される列が自動的に含まれます。将来の列を取り込むには、それらをリストに追加する必要があります。詳細については、 情報 「履歴追跡を有効にする (SCD タイプ 2)」を参照してください。 
 
- 
「 すべて実行 」をクリックします。 
パイプライン定義で次のテーブル設定プロパティを使用して、取り込む特定の列を選択または選択解除できます。
- include_columns: 必要に応じて、インジェストに含める列のリストを指定します。このオプションを使用して列を明示的に含めると、パイプラインは将来ソースに追加される列を自動的に除外します。将来の列を取り込むには、それらをリストに追加する必要があります。
- exclude_columns: 必要に応じて、インジェストから除外する列のリストを指定します。このオプションを使用して列を明示的に除外すると、パイプラインには、今後ソースに追加される列が自動的に含まれます。将来の列を取り込むには、それらをリストに追加する必要があります。
パイプラインを作成するには:
databricks pipelines create --json "<pipeline definition or json file path>"
パイプラインを編集するには:
databricks pipelines update --json "<pipeline definition or json file path>"
パイプライン定義を取得するには:
databricks pipelines get "<pipeline-id>"
パイプラインを削除するには:
databricks pipelines delete "<pipeline-id>"
詳細については、以下を実行してください:
databricks pipelines --help
databricks pipelines <create|update|get|delete|...> --help
JSON パイプライン定義の例:
"ingestion_definition": {
     "connection_name": "<connection-name>",
     "objects": [
       {
         "table": {
           "source_schema": "<source-schema>",
           "source_table": "<source-table>",
           "destination_catalog": "<destination-catalog>",
           "destination_schema": "<destination-schema>",
           "table_configuration": {
              "scd_type": "SCD_TYPE_2",
              "include_columns": ["<column-a>", "<column-b>", "<column-c>"]
           }
         }
       }
     ]
 }