この記事を参考に、Pendoのデータ同期をDatabricks SQLウェアハウスに接続します。Databricksでターゲットカタログとスキーマを作成し、PendoはPendoのテーブルをそのスキーマに直接同期します。
PendoはデータをDatabricksワークスペースにコピーします。コピーされたデータはお客様の組織が所有・管理し、関連するDatabricksのストレージおよびコンピューティングの費用もお客様の組織が負担します。
注:Databricksへのデータ同期は現在、米国およびEUリージョンのPendoサブスクリプションでのみ利用できます。
前提条件
始める前に、以下の点を確認してください。
- Pendoサブスクリプションの管理者権限、またはデータ同期の設定権限を持っていること。
- Databricks SQLウェアハウスと接続IDを新規作成するか、既存のものを使用できること。
- Databricksでカタログとスキーマを作成することも、既存のカタログとスキーマを同期ターゲットとして使用することもできること。カタログ名とスキーマ名には、文字、数字、アンダースコアのみを使用できます。
- 接続IDに対象のウェアハウス、カタログ、およびスキーマへのアクセス権を付与できること。
- ワークスペースでUnity CatalogとHive Metastoreのどちらが使用されているかを把握していること。Unity Catalogがデフォルトです。Hive Metastoreもサポートされており、ステージングバケットの認証情報が必要です。
本番環境の接続には、Databricksサービスプリンシパルを使用したOAuthクライアント資格情報を推奨します。個人用アクセストークン(PAT)による認証にも対応しています。
ステップ1. SQLウェアハウスを作成または選択する
- Databricksで[SQLウェアハウス]に移動します。
- Pendoのデータ同期用のSQLウェアハウスを作成するか、接続アイデンティティが使用できる既存のウェアハウスを選択します。
- Unity Catalogを使用している場合は、ウェアハウスがUnity Catalogを使用するように設定されていることを確認してください。
- アクセスを設定する間、データウェアハウスを利用可能な状態に保ってください。その接続情報は、この記事の後半で取得します。
ステップ2. カタログとスキーマを作成または選択する
Pendoは、Databricksにすでに存在するスキーマに同期します。Pendoで宛先を追加する前に、カタログとスキーマの両方を作成します。
- Databricksで[カタログ]に移動してください。
- Pendoデータ同期用のカタログを作成するか、既存のカタログを選択してターゲットとして使用します。
- ターゲットカタログで、Pendoデータのスキーマを作成するか、そのカタログ内の既存のスキーマを選択してください。
- カタログ名とスキーマ名をメモしておきます。両方をPendoに入力します。
注:Pendoはカタログやスキーマを作成しません。宛先を検証する際にどちらかが存在しない場合、検証は失敗します。Pendoに入力するカタログ名とスキーマ名には、文字、数字、アンダースコアのみを含めることができます。たとえば、スペース、ハイフン、ピリオド、その他の特殊文字を含む名前ではなく、pendo_catalogやpendo_schemaを使用してください。詳細については、Databricksの「識別子ルール」を参照してください。
ステップ3. OAuthクライアント認証情報を設定する
- Databricksで[設定]>[IDとアクセス]>[サービスプリンシパルの管理]に移動します。
- Pendoのデータ同期専用のサービスプリンシパルを追加します。
- サービスプリンシパルのOAuthシークレットを生成します。クライアントIDとシークレットを安全に保存します。シークレットは再度表示されません。
- サービスプリンシパルに、SQLウェアハウスのCan use権限を付与してください。
- ターゲットカタログに
USE CATALOG権限を付与してください。 - サービスプリンシパルにターゲットスキーマへのアクセス権を付与します。以下の権限を付与してください。
USE SCHEMAselectAPPLY TAGWRITE VOLUMEMODIFYCREATE MATERIALIZED VIEWREAD VOLUMECREATE TABLECREATE VOLUME
Pendoの接続先フォームで使用するため、クライアントIDとシークレットを手元に用意しておいてください。
注:USE CATALOGの指定漏れが、接続テストに失敗する最も一般的な原因です。
代替案:個人用アクセストークン(PAT)を設定する
OAuthの代わりにPAT認証を使用する場合は、データ同期で使用するDatabricks ID用のトークンを作成してください。特定の従業員にライフサイクルが依存しないため、個々の従業員のトークンではなく、専用のサービスプリンシパルトークンを使用することが望ましいです。
- Databricksワークスペースで[設定]>[開発者]>[アクセストークン]に移動します。
- 適切な名前と有効期間を設定してトークンを作成します。ワークスペースでスコープ付きトークンを使用している場合は、SQLウェアハウスへのアクセスに必要な
sqlスコープを含めます。 - トークンをコピーして安全に保管してください。二度と表示されません。
- トークンのアイデンティティに、SQLウェアハウスに対するCan use権限、対象カタログに対する
USE CATALOG権限、および必要なスキーマレベルの権限が付与されていることを確認してください。
サービスプリンシパル用のPATの作成などの追加手順については、「Databricksパーソナルアクセストークンを使用した認証」を参照してください。
Pendoでトークンをパーソナルアクセストークンとして入力します。
ステップ4. Databricksの接続情報を収集する
Databricks SQLウェアハウスの接続詳細で、以下の情報を収集してください。
- サーバーのホスト名
- ポート(通常は
443) - カタログ名
- HTTPパス
作成した対象スキーマの名前も控えておいてください。
ステップ5. PendoでDatabricksの宛先を追加する
- Pendoでデータ同期の設定フローを開き、宛先としてDatabricksを選択します。
- 宛先の詳細を入力します。
- サーバーのホスト名
- ポート
-
スキーマ(完全な
catalog.schemaパスではなく、スキーマ名のみ) - カタログ
- HTTPパス
-
認証方法で、次のいずれかを選択します。
- クライアント認証情報(推奨)。Databricksサービスプリンシパル用のOAuthクライアントIDとクライアントシークレットを入力します。
- PAT。パーソナルアクセストークンを入力します。
- メタストアでは、Unity CatalogまたはHive Metastoreを選択してください。
- SSHトンネルを使用では、組織のネットワーク構成に必要な設定を選択してください。
- Hive Metastoreを選択した場合は、接続IDが書き込みおよび削除を行えるステージングバケットの認証情報を入力します。Pendoは、ステージングされた転送ファイルが読み込まれた後に削除します。また、安全対策として2日間のライフサイクルルールを設定することもできます。
- 接続を検証してから、[データを選択]に進みます。
ステップ6. 同期するデータを選択する
同期するPendoアプリケーションを選択します。アカウントと訪問者のメタデータを選択することもできます。初期設定時のデータ選択は任意で、後から完了することもできます。
宛先が設定され、データが選択された後、最初の定期同期が夜間に開始されます。以降の同期は約24時間ごとに実行されます。
各定期同期では、新規および更新された行が段階的に読み込まれます。全件再読み込みは必要ありません。
利用可能なテーブルとフィールドについては、「データ同期スキーマ定義」およびDatabricks ERDを参照してください。
トラブルシューティング
| 症状 | 原因 | 解決 |
|---|---|---|
| Pendoがカタログ名またはスキーマ名を受け付けない。 | 名前にハイフン、スペース、ピリオドなど、アルファベット、数字、アンダースコア以外の文字が含まれている。 | Databricksで、文字、数字、アンダースコアのみを使用してカタログまたはスキーマを作成または名前変更し、たとえば pendo_schema のような新しい名前をPendoに入力してください。 |
| 検証が失敗し、スキーマが見つからないというエラーが報告される。 | 対象のカタログまたはスキーマがDatabricksに存在しないか、Schemaにカタログ名を含むフルパスが含まれている。 | Databricks でカタログとスキーマが存在することを確認してください。スキーマにはスキーマ名のみを、カタログにはカタログ名のみを入力してください。 |
| Pendoが接続を検証できない。 | 接続値、認証情報、データウェアハウスの権限、またはネットワークルールが正しくない。 | サーバーのホスト名、ポート、HTTPパス、カタログ、スキーマ、認証値、およびCan useウェアハウス権限を再確認してください。 |
| Pendoはデータウェアハウスに接続するが、オブジェクトを作成または更新できない。 | 接続IDに必要なカタログまたはスキーマ権限がない。 |
USE CATALOGおよび必要なスキーマ権限を確認してください。特にUSE SCHEMA、CREATE TABLE、MODIFYに注意してください。 |
| OAuth認証に失敗した。 | クライアントIDまたはシークレットが正しくないか、有効期限が切れているか、ウェアハウスを使用できないプリンシパルに属している。 | OAuthシークレットを生成またはローテーションし、宛先を更新して、サービスプリンシパルのウェアハウスへのアクセス権を確認します。 |
| Hive Metastoreの転送がステージング中に失敗する。 | ステージング認証情報ではオブジェクトへの書き込みや削除はできません。 | バケットの認証情報とバケットポリシーを再確認し、検証を再試行してください。 |
| 宛先のステータスが失敗に変わり、その宛先のデータ同期は無効になる。 | Databricksによって報告された宛先側の問題が原因で、転送に失敗した。 | 宛先側の問題を解決してから、Pendoで宛先を検証して再度有効にしてください。 |
| Databricksが送信先として表示されない。 | Pendoサブスクリプションがサポート対象のリージョンでホストされていない。 | サブスクリプションが米国またはEUリージョンにあることを確認してください。 |
次のステップ
- Pendoが同期するテーブルとフィールドについては、データ同期スキーマの定義およびDatabricks ERDを参照してください。
- 同期先と同期タイミングの概要については、Pendoのデータ同期の概要を参照してください。