チュートリアル: Snowflake ServiceNow®データインジェクションコネクタのインストール¶
概要¶
このチュートリアルを使用して、Snowsightウィザードを使用してSnowflake Connector for ServiceNow ®を構成して理解し、いくつかのテーブルを選択してデータをインジェストし、クエリの例を実行します。
このチュートリアルは網羅的なものではありません。全機能と制限については、 Snowflake Connector for ServiceNow®V2 について をご確認ください。
注釈
このチュートリアルでは、ServiceNow®アカウントを持っていないことを前提に、開発者アカウントの作成手順を説明します。Servicenow®アカウントをお持ちの場合は、Snowflake connector for ServiceNow®は コネクタ規約 の対象となることをご了承の上、ご自由にお試しください。
前提条件¶
このチュートリアルを始める前に、以下の条件を満たしていることを確認してください。
Snowflake Marketplaceで利用規約に同意するための
ORGADMIN
権限。コネクタをインストールしたいSnowflakeアカウントに対する
ACCOUNTADMIN
権限。
学習内容¶
このチュートリアルでは、次の方法を学びます:
Snowflake Connector for ServiceNow®を設定する方法。
ServiceNow®データをSnowflakeにインジェストする方法
開発環境で不要なコストを回避するためにコネクタを停止する方法。
次が必要になります¶
構築内容¶
ServiceNow®からSnowflakeへのインジェスチョンデータフロー
ServiceNow®開発者インスタンスの設定¶
ServiceNow®アカウントでこのコネクタをテストしたくない場合は、開発者インスタンスを使用できます。このセクションでは、開発者インスタンスを設定する方法について説明します。
ServiceNow®開発者ウェブサイト にアクセスし、開発者ユーザーを作成します。
新しく作成したユーザーで開発者ウェブサイトにログオンし、 Create an Instance を選択します。
インスタンスタイプを選択します。インスタンス URL、ユーザーとパスワードが記載されたメールを受け取ります。
デプロイは通常5分程度と、かなり迅速です。しかし、待っている間に、次のステップに進んでSnowflakeを構成しましょう!
Snowflakeアカウントの作成と設定¶
Snowflakeアカウントの作成¶
Snowflakeアカウントをお持ちでない場合は、 snowflake.com で無料トライアルをご利用いただけます。 Start for Free を選択し、指示に従います。
利用規約に同意する¶
SnowsightウェブインターフェイスからSnowflakeアカウントにログオンし、
ORGADMIN
ロールに変更します。Admin » Billing & Terms を選択します。
Snowflake Marketplace セクションで、コンシューマー利用規約を確認します。
規約に同意する場合は、 Accept Terms & Conditions を選択します。
仮想ウェアハウスの作成¶
コネクタには仮想ウェアハウスが必要です。必要なウェアハウスを作成するには、次を実行します。
ACCOUNTADMIN
ロールに変更します。
Admin -> Warehouses に移動し、 + Warehouse を選択します。
CONNECTOR_UI_WH
をウェアハウス名とて、サイズは XS に指定し、その他はすべてデフォルトのままにします。Create Warehouse を選択します。
ServiceNow®コネクタのインストール¶
このコネクタは、Snowflake Marketplaceを通じて提供され、すべてのSnowflake顧客が利用できます。選択されると、いくつかのビューとストアドプロシージャを含むアプリケーションとしてアカウントにインストールされます。
左のメニューで Data Products を選択し、次に Marketplace を選択します。
検索ウィンドウで
ServiceNow
と入力し、タイルを選択します。ビジネスニーズと使用例を確認します。
Get を選択します。
以前に作成したウェアハウス
CONNECTOR_UI_WH
を選択します。Options を選択します。
このチュートリアルでは、インストールデータベースのデフォルト名
Snowflake_Connector_for_ServiceNow
を使用します。追加のロールは選択しないでください。Get を選択します。コネクタが使用可能になったことを示す
Snowflake Connector for ServiceNow
が表示されます。Done を選択します。管理オプションは次のセクションで指定します。
次に、コネクタがインストールされていることを確認します。Snowsightから、 Data Products -> Apps に移動します。 Snowflake_Connector_for_ServiceNow という名前の新しいアプリケーションがインストールされているはずです。
Data -> Databases のパブリックスキーマに移動し、新しく利用可能になったビューとプロシージャを調べます。
すべての前提条件を完了¶
Data Products -> Apps -> Snowflake Connector for ServiceNow からSnowflake Connector for ServiceNow®を起動します。コネクタがデータインジェスチョンを開始する前に完了する必要があるタスクのリストが表示されます。以下の説明をよくお読みになり、それぞれご記入ください。
最後のステップでは、OAuth2 認証を有効にする場合、アプリケーションレジストリを作成するよう求められます。次のいくつかのステップでは、これに焦点を当てます。
次のセクションでは、Snowflakeから ServiceNow®に特定のデータをコピーできるように、2つのブラウザタブを開くことをお勧めします。
Snowflakeからコネクタを使用して、アプリケーションレジストリに貼り付けるリダイレクト URL を生成します。
ServiceNow®から、クライアント ID とシークレットを提供するためにアプリケーションレジストリが必要になります。これらをSnowflakeに貼り付けます。
Snowflakeで、次を実行します。¶
リダイレクト URL をコピーします。次のセクションで必要になります。
ブラウザで新しいタブを開き(上記を閉じずに)、次のセクションの手順に従ってください。
ServiceNow®で、次を実行します。¶
ServiceNow®開発者インスタンスにログインします。
メインページから、 All を選択し、 Application Registry を検索します。
ウィンドウ右上の New を選択します。
Create an OAuth API endpoint for external clients を選択します。
Snowflake_connector など、にエンドポイントに名前を付けます。値は後の手順で自動的に入力されるため、クライアントシークレットは空白のままにしておきます。
Snowflake側で生成されたリダイレクト URL を貼り付けます。
Submit を選択します。ウィンドウが閉じます。
先ほど作成したレジストリを選択すると、再度開きます。 クライアント ID と クライアントシークレット は自動生成されることに注意してください。
ServiceNow®ブラウザのタブを閉じたり、 クライアント ID と クライアントシークレット を安全な場所に保管したりしないでください。後で必要になります。
Snowflake構成タブに戻ります。
コネクタを構成する¶
Start configuration を選択します。この構成画面が表示されます。デフォルトで、フィールドはコネクタの構成時に作成されたオブジェクトの名前に設定されます。また、既存のオブジェクトを使用することもできます。選択された仮想ウェアハウスは、コネクタによってバックグラウンドでのデータインジェスチョンに使用されます。
詳細については、 Snowflake Connector for ServiceNow®V2 の構成 をご確認ください。
Configure を選択します。
構成プロセスが完了するまでに数分かかる場合があることに注意してください。
注釈
このステップでは、自動停止を10分に設定したLウェアハウスを作成しました。1時間ごとにリフレッシュするように設定すると、Lウェアハウス(8クレジット/時間)は1時間ごとに最低10分間起動します。このチュートリアルでは必要ありません。 Admin -> Warehouses -> SERVICENOW_WAREHOUSE -> ... > Edit にアクセスし、これを XSMALL に変更し、自動タイムアウトを1分に変更します。実際の使用ケースでは、Lウェアハウスが必要になることがよくあります。
注釈
SERVICENOW_WAREHOUSE
にリソースモニターをアタッチする必要があります。リソースモニターをアタッチするには、 Admin » Resource Monitors に移動し、 Resource Monitor を選択して、ウェアハウスリソースモニターを作成します。
ServiceNow® OAuth2 ハンドシェイクのためにSnowflakeを設定¶
認証方法として OAuth2 を選択します。
ServiceNow®インスタンスの詳細を入力します。これは、ServiceNow®アカウントの ServiceNow® URL の最初の部分であり、
https://*
プロトコルと後続のservice-now.com
は 含まれません。ServiceNow®から Client id と Client secret をSnowflakeウィザードに貼り付けます。
Connect を選択します。ServiceNow®アカウントがポップアップ表示され、Snowflakeへの接続を要求します。
Allow を選択します。2つのシステム間で接続が確立されます。
接続を確認するには、3点リーダー [...] を選択し、 View Details を選択します。ポップアップの上部には、 ServiceNow が認証された日付が表示されます。
注釈
問題がある場合は、クライアントシークレットがコピーされていない可能性があります。パスワードフィールドのロックを解除し、テキストをコピーして貼り付けます。
構成削除の同期¶
挿入と更新だけでなく、削除もSnowflakeに同期させたい場合は、ジャーナルテーブルの名前を指定する必要があります。デフォルトでは、ServiceNow®は削除された記録に関する情報を保存するために sys_audit_delete
テーブルを使用します。削除を気にしないのであれば、このフィールドは空欄のままにしておいてもかまいません。
Validate を選択して、コネクタがソースシステムに接続でき、必要なすべてのテーブルにアクセスできるかどうかを確認します。プロセスが完了するまでに数分かかる場合があります。完了したら、 Define data to sync を選択し、インジェスチョンするテーブルを選択します。
ServiceNow®テーブルの選択¶
注釈
次にご注意ください。
コネクタは、
sys_id
列が存在するテーブルのみをインジェストできます。ServiceNow®ビューはサポートされていません。これらのビューをインジェストする代わりに、基になるビューのすべてのテーブルを同期し、同期したテーブルをSnowflakeに結合する必要があります。
増分更新 は、
sys_updated_on
またはsys_created_on
列を持つテーブルに対してのみ実行されます。sys_updated_on
またはsys_created_on
列を持たないテーブルの場合、コネクタはtruncate and load
モードを使用します。このモードでは、テーブルは常に初期ロードアプローチを使用してインジェストされ、新しくインジェストされたデータが古いデータに置き換わります。
Snowflake Connector for ServiceNow ウィンドウの上部バーで、 Data Sync を選択します。
後でテストクエリを実行できるように、いくつかのテーブルをインジェストする必要があります。検索ウィンドウから incident と入力し、その横にあるボックスにチェックを入れて、30分の同期時間を選択します。
他のテーブルを選択するには、検索をクリアし、テーブル名を入力して’、チェックボックスを選択します。少なくとも
task
テーブルに対してこれを行います。
注釈
ヒント: 検索フィールドをクリアし、タイトル Status を選択すると、選択したすべてのテーブルがソートされ表示されます。
Start Sync を選択します。選択ウィンドウが閉じ、メインのコネクタウィンドウから Syncing Data というメッセージが表示されます。選択したテーブルに加え、3つのシステムテーブルもロードされます。
sys_dictionary
、sys_db_object
、およびsys_glide_object
は生データの表示を構築するために必要です。
成功を示すメッセージが表示されます。このメッセージは、少なくとも1つのテーブルが完全にインジェストされると表示されます。
注釈
早まってインジェストを停止しないでください。ビューが宛先データベースに最初に構築されるようにします。
コネクタのモニタリング¶
ワークシートを開いてコネクタのステータスを調べます。以下は、モニタリング情報を得るために実行できる SQL クエリの例です。
// Return general information about all ingestions
SELECT * FROM SNOWFLAKE_CONNECTOR_FOR_SERVICENOW.public.connector_stats;
// Search for information about particular table ingestions
SELECT * FROM SNOWFLAKE_CONNECTOR_FOR_SERVICENOW.public.connector_stats WHERE table_name = '<table_name>';
// Examine connector configuration
SELECT * FROM SNOWFLAKE_CONNECTOR_FOR_SERVICENOW.public.connector_configuration;
// Calculate ingested data volume
SELECT
table_name,
sum(ingested_rows) AS row_count
FROM SNOWFLAKE_CONNECTOR_FOR_SERVICENOW.public.connector_stats
GROUP BY table_name
ORDER BY table_name;
// General connector statistics
SELECT * FROM SNOWFLAKE_CONNECTOR_FOR_SERVICENOW.public.connector_overview;
インジェストしたデータへのアクセス設定¶
コネクタは、 DATA_READER
アプリケーションロールを公開します。このロールには、宛先スキーマ内のすべてのインジェストされたデータへの読み取りアクセスがあります。インストールプロセスの 構成 ステップで提供されたロールに自動的に付与されます。このガイドの前半のスクリーンショットで、 SERVICE_NOW_RESOURCES_PROVIDER
という名前を付けました。必要に応じて、アプリケーションロールまたはアカウントロールのいずれかをさらに付与することができます。
データのクエリ¶
コネクタが宛先データベースの宛先スキーマの下に作成したテーブルを調べます。同期用に構成された ServiceNow®内のテーブルごとに、コネクタは次のテーブルとビューを作成します。
各記録が単一の
VARIANT
列に含まれる、生のデータを含む同じ名前のテーブル。フラット化された形式のデータを含む
table_name__view
という名前のビュー。このビューには、元のテーブルにある各列の列と、元のテーブルに存在する各記録の行が含まれています。
注釈
コネクタを開始した後、ビューが作成されるまでに時間がかかる場合があります。ビューの作成は、ServiceNow® sys_db_object
、 sys_dictionary
、および sys_glide_object
テーブルのデータに依存しています。テーブルの同期を有効にすると、コネクタはこれらの ServiceNow®テーブルからメタデータをロードします。コネクタがこのメタデータをロードするまでに時間がかかる場合があります。表示作成中はウェアハウスを停止しないでください。
table_name__view
と同じデータと、ServiceNow®で削除された記録の行を含むtable_name__view_with_deleted
という名前のビュー。ServiceNow からコネクタが取得した変更の履歴を含むテーブル
table_name__event_log
。
生データからのクエリは、 生データへのアクセス をご確認ください。ビューをクエリするには(推奨)、 フラット化されたデータへのアクセス をご確認ください。
月別および優先度別のインシデント発生件数を特定するクエリ¶
以下は、月別および優先度別のインシデント発生件数を特定するテストクエリです。その他のクエリ例は、MarketplaceのSnowflake Connector for ServiceNow®ページに提供されています。
USE ROLE SERVICE_NOW_RESOURCES_PROVIDER;
USE DATABASE SERVICENOW_DEST_DB;
USE SCHEMA DEST_SCHEMA;
WITH T1 AS (
SELECT
DISTINCT
T.NUMBER AS TICKET_NUMBER,
T.SHORT_DESCRIPTION,
T.DESCRIPTION,
T.PRIORITY,
T.SYS_CREATED_ON AS CREATED_ON,
T.SYS_UPDATED_ON AS UPDATED_ON,
T.CLOSED_AT
FROM TASK__VIEW T
LEFT JOIN INCIDENT__VIEW I
ON I.SYS_ID = T.SYS_ID -- ADDITIONAL INCIDENT DETAIL
WHERE I.SYS_ID IS NOT NULL -- THIS CONDITION HELPS KEEP JUST THE INCIDENT TICKETS
)
SELECT
YEAR(CREATED_ON) AS YEAR_CREATED,
MONTH(CREATED_ON) AS MONTH_CREATED,
PRIORITY,
COUNT(DISTINCT TICKET_NUMBER) AS NUM_INCIDENTS
FROM T1
GROUP BY
YEAR_CREATED,
MONTH_CREATED,
PRIORITY
ORDER BY
YEAR_CREATED,
MONTH_CREATED,
PRIORITY
;
コネクタへのアクセス許可¶
コネクタは、宛先データベースのデータにアクセスするために使用されるロールの他に、2つのアプリケーションロールを公開します。
VIEWER
ロールには、コネクタの構成と状態への読み取り専用アクセスがあります。コネクタの設定を変更し、インジェストを有効/無効にできる
ADMIN
。
エラーをモニターし、統計を実行し、コネクタの統計を調べ、有効化されたテーブルを調べるために、コネクタデータベースのビューと読み取り専用プロシージャへのアクセスを許可する ServiceNow®モニタリングロールを設定できます。
たとえば、ワークシートで以下を実行します(その後、ロールを使用します)。
USE ROLE accountadmin;
CREATE ROLE IF NOT EXISTS servicenow_monitor_role;
GRANT APPLICATION ROLE SNOWFLAKE_CONNECTOR_FOR_SERVICENOW.viewer TO ROLE servicenow_monitor_role;
GRANT USAGE ON WAREHOUSE SERVICENOW_WAREHOUSE TO ROLE servicenow_monitor_role;
インジェスチョンの停止¶
このチュートリアルでは、データをインジェストしているだけであるため、その初期ロードの後にインジェスチョンを停止することは理にかなっています。しかし、本番環境では、コネクタを停止することはないでしょう。
注釈
コネクタを停止しない場合、指定した時間間隔で仮想ウェアハウスが起動し、クレジットが消費されます。
Snowsightで、 Snowflake Connector for ServiceNow タイルを選択します。
Snowflake Connector for ServiceNow ウィンドウで、 Pause Connector を選択します。
コネクタのアンインストール(データはアンインストールしません)。¶
チュートリアルを完了した場合、または何らかの理由でコネクタが不要になった場合は、Snowflake Marketplaceから簡単にアンインストールできます。
データ製品 を選択し、次に アプリ を選択します。
コネクタアプリを表すリスト上の項目で、3つのドットのアイコンを選択します。
アンインストール を選択します。
アプリケーションによって所有されているオブジェクト(宛先スキーマでインジェストされたデータを含むテーブルとビュー)を削除するか、それらの所有権を別のロールに譲渡するかを決定します。
アンインストール を選択します。
結論とリソース¶
おめでとうございます。Snowflake Connector for ServiceNow®を正常にインストールおよび構成し、データをインジェストしてクエリを実行し、インシデントと優先度に関する洞察を収集しました。
学習した内容
Snowflake Connector for ServiceNow®を設定する方法。
ServiceNow®データをSnowflakeにインジェストする方法。
開発環境で不要なコストを回避するためにコネクタを停止する方法。