コンテンツにスキップ

Databricks向けクラウドデータ取り込み

このページでは、クラウドデータ取り込み (CDI) を使用してDatabricksからBrazeにデータを同期するために必要なすべての情報を説明します。Databricksで作成するリソース、Brazeでソースを接続して同期を作成する方法、各データタイプのソーステーブル、Databricks固有のトラブルシューティングについて取り上げます。

設定の概要

  1. Databricksアカウントで、Brazeに同期するテーブルまたはビューを設定します。
  2. サポートされている認証方法のいずれかでBraze用の認証情報を作成し、同期するデータを含むDatabricksのカタログとスキーマへのアクセスを許可します。
  3. Brazeダッシュボードで新しいソースと同期を作成します。
  4. 統合を検証し、同期を開始します。

ステップ1: ソーステーブルを設定する

このセクションの手順では、PAYLOAD列を持つテーブルを作成します。データ定義ステップでビジュアルを使用して列をマッピングする場合や、SQLでクエリを作成する場合は、代わりに既存のテーブルまたはビューを使用できます。その場合はテーブル作成の手順をスキップし、同期するテーブルまたはビューへの読み取りアクセス権をBrazeに付与してください。オプションの比較については、データ定義オプションを選択するを参照してください。

スキーマとテーブルには任意の名前を付けられますが、列名は以下のタブの定義と一致させる必要があります。テーブルの代わりにビューまたはマテリアライズドビューを使用することもできます。

必要に応じて、ソーステーブルを格納する新しいカタログまたはスキーマを設定します。

CREATE SCHEMA BRAZE-CLOUD-PRODUCTION.INGESTION;

同期するデータタイプのタブを選択してください。

ユーザー属性、カスタムイベント、購入イベントはすべて同じ形式のソーステーブルを使用します。異なるのはPAYLOADの内容だけです。

CREATE TABLE `BRAZE-CLOUD-PRODUCTION.INGESTION.USERS_ATTRIBUTES_SYNC`
(
  updated_at TIMESTAMP DEFAULT current_timestamp(),
  --At least one of external_id, alias_name and alias_label, or braze_id is required
  external_id STRING,
  --If using user alias, both alias_name and alias_label are required
  alias_name STRING,
  alias_label STRING,
  --braze_id can only be used to update existing users created through the Braze SDK
  braze_id STRING,
  --If you include both email and phone, email is used as the primary identifier
  email STRING,
  phone STRING,
  payload STRING, STRUCT, or MAP
);
フィールド名 タイプ モード
UPDATED_AT TIMESTAMP REQUIRED
PAYLOAD STRING、STRUCT、またはMAP REQUIRED
EXTERNAL_ID STRING NULLABLE
ALIAS_NAME STRING NULLABLE
ALIAS_LABEL STRING NULLABLE
BRAZE_ID STRING NULLABLE
EMAIL STRING NULLABLE
PHONE STRING NULLABLE
  • UPDATED_AT - この行がテーブルで更新または追加された時刻です。Brazeは、UPDATED_AT が最後に同期された値より後の行を同期します。境界となるタイムスタンプとまったく同じ時刻の行は、新しい行が同じタイムスタンプを共有している場合、再同期されることがあります。
  • ユーザー識別子列 - テーブルには、1つ以上のユーザー識別子列を含めることができます。各行には識別子を1つだけ含めてください (external_id、alias_name と alias_label の組み合わせ、braze_id、email、phone のいずれか)。ソーステーブルには、1つ、2つ、3つ、4つ、または5つすべての識別子タイプの列を含めることができます。
    • EXTERNAL_ID - 更新するユーザーを識別します。Brazeで使用されている external_id の値と一致している必要があります。
    • ALIAS_NAME と ALIAS_LABEL - この2つの列でユーザーエイリアスオブジェクトを作成します。alias_name は一意の識別子である必要があり、alias_label はエイリアスのタイプを指定します。ユーザーは異なるラベルを持つ複数のエイリアスを持つことができますが、alias_label ごとに持てる alias_name は1つだけです。
    • BRAZE_ID - Brazeのユーザー識別子です。これはBraze SDKによって生成されるもので、Cloud Data Ingestionを通じてBraze IDを使用して新しいユーザーを作成することはできません。新しいユーザーを作成するには、外部ユーザー IDまたはユーザーエイリアスを指定してください。
    • EMAIL - ユーザーのメールアドレスです。同じメールアドレスを持つプロファイルが複数存在する場合、最後に更新されたプロファイルが優先的に更新されます。メールと電話番号の両方を含める場合は、メールがプライマリ識別子として使用されます。
    • PHONE - ユーザーの電話番号です。同じ電話番号を持つプロファイルが複数存在する場合、最後に更新されたプロファイルが優先的に更新されます。
  • PAYLOAD - Brazeのユーザーに同期するフィールドの文字列または構造体です。

属性の同期では、PAYLOADはユーザー属性オブジェクトの形式に従います。階層化カスタム属性、オブジェクトの配列、購読グループのステータスを含めることができます。ペイロードの例については、テーブルの設定を参照してください。

カスタムイベントは、ユーザー属性と同じソーステーブルを使用します。User attributesタブに示されているテーブルを作成し、PAYLOADにイベントオブジェクトを設定してください。

イベントを同期するには、イベント名が必要です。timeフィールドは、ISO 8601文字列またはyyyy-MM-dd'T'HH:mm:ss:SSSZ形式で指定します。timeフィールドがない場合、BrazeはUPDATED_AT列の値をイベント時刻として使用します。app_idやpropertiesなどのその他のフィールドはオプションです。

1行につき1つのイベントを同期できます。

{
    "app_id" : "your-app-id",
    "name" : "rented_movie",
    "time" : "2013-07-16T19:20:45+01:00",
    "properties": {
        "movie": "The Sad Egg",
        "director": "Alex Smith"
    }
}

購入イベントは、ユーザー属性と同じソーステーブルを使用します。User attributesタブに示されているテーブルを作成し、PAYLOADに購入オブジェクトを設定してください。

購入イベントを同期するには、product_id、currency、priceが必要です。オプションのtimeフィールドは、ISO 8601文字列またはyyyy-MM-dd'T'HH:mm:ss:SSSZ形式で指定します。timeフィールドがない場合、BrazeはUPDATED_AT列の値をイベント時刻として使用します。app_id、quantity、propertiesなどのその他のフィールドはオプションです。

1行につき1つの購入イベントを同期できます。

{
    "app_id" : "11ae5b4b-2445-4440-a04f-bf537764c9ad",
    "product_id" : "Completed Order",
    "currency" : "USD",
    "price" : 219.98,
    "time" : "2013-07-16T19:20:30+01:00",
    "properties" : {
        "products" : [ { "name": "Monitor", "category": "Gaming", "product_amount": 19.99 },
        { "name": "Gaming Keyboard", "category": "Gaming ", "product_amount": 199.99 }
        ]
    }
}

カタログの同期を作成する前に、Brazeで同期先のカタログを作成してください。カタログのワークフロー全体については、カタログデータの同期と削除を参照してください。

CREATE TABLE `BRAZE-CLOUD-PRODUCTION.INGESTION.CATALOGS_SYNC`
(
  updated_at TIMESTAMP DEFAULT current_timestamp(),
  id STRING,
  deleted BOOLEAN,
  payload STRING, STRUCT, or MAP
);
フィールド名 タイプ モード
UPDATED_AT TIMESTAMP REQUIRED
PAYLOAD STRING、STRUCT、またはMAP REQUIRED
ID STRING REQUIRED
DELETED BOOLEAN NULLABLE

統合の名前は、Brazeで作成したカタログの名前と完全に一致している必要があります。

Brazeでは、同期を実行するたびにソーステーブルが完全に更新されるよう、カタログデータからビューを作成することをお勧めします。たとえば、product_idと3つの追加属性を持つ商品データのテーブル (product_catalog_1) がある場合、次のビューを同期できます。

CREATE view IF NOT EXISTS BRAZE_CLOUD_PRODUCTION.INGESTION.CATALOGS_SYNC AS (SELECT
    last_updated as UPDATED_AT,
    product_id as ID,
    TO_JSON(
      STRUCT(
      attribute_1,
      attribute_2,
      attribute_3,
      )
    ) as PAYLOAD
  FROM `BRAZE_CLOUD_PRODUCTION.INGESTION.product_catalog_1`);

キャンバストリガーは、ゼロコピーパーソナライゼーションを実現します。同期先のキャンバスの設定と考慮事項については、ゼロコピーパーソナライゼーションを参照してください。

CREATE TABLE `BRAZE-CLOUD-PRODUCTION.INGESTION.CANVAS_TRIGGERS_SYNC`
(
  updated_at TIMESTAMP DEFAULT current_timestamp(),
  --At least one of external_id or alias_name and alias_label is required
  external_id STRING,
  --If using user alias, both alias_name and alias_label are required
  alias_name STRING,
  alias_label STRING,
  properties STRING, STRUCT, or MAP
);
フィールド名 タイプ 必須
UPDATED_AT TIMESTAMP はい
PROPERTIES STRING、STRUCT、またはMAP はい
EXTERNAL_ID STRING NULLABLE
ALIAS_NAME STRING NULLABLE
ALIAS_LABEL STRING NULLABLE

キャンバストリガーの同期は、他のユーザーデータの同期と次の3点で異なります。

  • external ID またはユーザーエイリアスの識別子のみがサポートされています。メールアドレスと電話番号は識別子としてサポートされていません。
  • 同期できるのは既存の Braze ユーザーのみです。新しいユーザーを作成することはできません。
  • PAYLOAD 列の代わりに PROPERTIES 列を使用します。これは、パーソナライゼーション用のキャンバスエントリプロパティとして使用するフィールドの JSON 文字列です。

キャンバストリガーテーブルには、次の列が必要です。

  • UPDATED_AT - この行がテーブルで更新または追加された時刻です。Brazeは、UPDATED_AT が最後に同期された値よりも後の行を同期します。境界となるタイムスタンプとまったく同じタイムスタンプを持つ行は、新しい行が同じタイムスタンプを持つ場合に再同期されることがあります。
  • ユーザー識別子の列として、EXTERNAL_ID、または ALIAS_NAME と ALIAS_LABEL のいずれか。これらの列は、キャンバスメッセージングをトリガーする対象のユーザーを識別します。
    • EXTERNAL_ID - キャンバスにエントリさせるユーザーを識別します。この値は、Brazeで使用される external_id の値と一致する必要があります。
    • ALIAS_NAME と ALIAS_LABEL - これらの列はユーザーエイリアスオブジェクトを作成します。alias_name は一意の識別子である必要があり、alias_label はエイリアスのタイプを指定します。ユーザーは異なるラベルを持つ複数のエイリアスを持つことができますが、1つの alias_label につき alias_name は1つのみです。
  • PROPERTIES - キャンバスでパーソナライゼーションプロパティとして使用できるようにするフィールドの JSON 文字列です。ユーザー固有の情報を含める必要があります。

開始するには、新しい同期を作成する際にキャンバストリガーデータタイプを選択します。

ユーザー削除用のソーステーブルには、1つ以上のユーザー識別子タイプと UPDATED_AT タイムスタンプを含める必要があります。ユーザー削除データでは、ペイロード列はサポートされていません。

  • UPDATED_AT - この行がテーブルで更新または追加された時刻です。Braze は、UPDATED_AT が最後に同期された値よりも後の行を同期します。新しい行が境界のタイムスタンプとまったく同じタイムスタンプを持つ場合、その境界タイムスタンプの行が再同期されることがあります。
  • ユーザー識別子列 - 各行には識別子を1つだけ含める必要があります。external_id、alias_name と alias_label の組み合わせ、または braze_id のいずれかです。ソーステーブルには、1つ、2つ、または3つすべての識別子タイプの列を含めることができます。
    • EXTERNAL_ID - 更新するユーザーを識別します。これは、Braze で使用されている external_id の値と一致する必要があります。
    • ALIAS_NAME と ALIAS_LABEL - これら2つの列によってユーザーエイリアスオブジェクトが作成されます。alias_name は一意の識別子である必要があり、alias_label はエイリアスのタイプを指定します。ユーザーは異なるラベルを持つ複数のエイリアスを持つことができますが、alias_label ごとに持てる alias_name は1つだけです。
    • BRAZE_ID - Braze のユーザー識別子です。これは Braze SDKによって生成されるもので、Cloud Data Ingestion を通じて Braze ID を使用して新しいユーザーを作成することはできません。新しいユーザーを作成するには、外部ユーザー ID またはユーザーエイリアスを指定してください。

次のフィールドを持つテーブルを作成します。

フィールド名 タイプ モード
UPDATED_AT TIMESTAMP REQUIRED
EXTERNAL_ID STRING NULLABLE
ALIAS_NAME STRING NULLABLE
ALIAS_LABEL STRING NULLABLE
BRAZE_ID STRING NULLABLE

統合の実行中に適切なアクションが行われるよう、インポート同期を作成ページでデータタイプをユーザーを削除に設定します。詳細については、クラウドデータ取り込みでユーザーを削除するを参照してください。

ステップ2: 認証を設定する

Brazeは、次のいずれかの認証方法でDatabricksに接続できます。

方法 Brazeによる認証方法 Brazeで入力する内容
OAuth M2M (推奨) Braze authenticates as a Databricks service principal using OAuth machine-to-machine (M2M) authentication. Client ID and Client secret
Personal access token Braze authenticates with a token generated in your Databricks workspace. Access token

OAuth M2M

Brazeは、OAuthマシン間 (M2M) 認証を使用して、サービスプリンシパルとしてDatabricksワークスペースに接続します。Databricksは、クラウドデータ取り込みのような無人接続にはOAuth M2Mを推奨しています。Brazeが使用する新しいサービスプリンシパルを作成し、SQLウェアハウスとソーステーブルへのアクセス権を付与してください。Brazeが接続するには、次の情報が必要です。

  • サービスプリンシパルのクライアントID (アプリケーションIDとも呼ばれます)
  • Brazeが認証に使用するクライアントシークレット

サービスプリンシパルを作成する

  1. Databricksワークスペースで、上部バーのユーザー名を選択し、Settings を選択します。
  2. Identity and access に移動し、Service principals の横にある Manage を選択します。
  3. Add service principal > Add new を選択します。
  4. サービスプリンシパルを識別しやすい名前 (「Braze CDI」など) を入力し、Add を選択します。
  5. 作成したサービスプリンシパルを選択します。Configurations タブで、Databricks SQL access が選択されていることを確認します。

クライアントシークレットを生成する

  1. サービスプリンシパルのページで Secrets タブを選択し、Generate secret を選択します。
  2. シークレットの有効期間を日数で入力します。Databricksで設定できる有効期間は最大730日です。
  3. Generate を選択します。
  4. Secret と Client ID の値をコピーし、Done を選択します。

クライアントIDとシークレットは、認証情報の作成ステップでBrazeダッシュボードに入力するまで安全な場所に保管してください。Databricksはシークレットを一度しか表示しません。

SQLウェアハウスへのアクセス権を付与する

BrazeにはSQLウェアハウスでクエリを実行する権限が必要ですが、ワークスペースの管理者アクセス権は必要ありません。

  1. サイドバーで SQL Warehouses を選択し、Brazeに使用させるウェアハウスを選択します。
  2. Permissions を選択します。
  3. 作成したサービスプリンシパルを検索して選択します。
  4. 権限のドロップダウンで Can use を選択し、Add を選択します。

ソーステーブルへのアクセス権を付与する

ステップ1で設定したカタログ、スキーマ、テーブルへの読み取りアクセス権をサービスプリンシパルに付与します。付与先には、サービスプリンシパルのアプリケーションID (クライアントIDと同じ値) を使用します。

GRANT USE CATALOG ON CATALOG `BRAZE-CLOUD-PRODUCTION` TO `APPLICATION_ID`;
GRANT USE SCHEMA ON SCHEMA `BRAZE-CLOUD-PRODUCTION`.INGESTION TO `APPLICATION_ID`;
GRANT SELECT ON TABLE `BRAZE-CLOUD-PRODUCTION`.INGESTION.USERS_ATTRIBUTES_SYNC TO `APPLICATION_ID`;

APPLICATION_ID は、サービスプリンシパルのアプリケーションIDに置き換えてください。その他の名前は必要に応じて更新できますが、権限は前の例と一致させる必要があります。

クライアントシークレットを更新する

Brazeは、認証情報ごとに1つのクライアントシークレットを保存します。シークレットを更新すると、その認証情報を使用するすべてのソースと同期が新しいシークレットに切り替わります。シークレットを置き換えるには、次の手順を実行します。

  1. Databricksで、クライアントシークレットを生成するの手順に従って、サービスプリンシパルの新しいシークレットを生成します。古いシークレットはステップ6まで保持してください。
  2. Brazeダッシュボードで データ設定 > クラウドデータ取り込み > 認証情報 に移動し、OAuth M2Mの認証情報を選択します。使用元 セクションには、この認証情報を使用するすべてのソースと同期が一覧表示されます。
  3. この認証情報を使用する同期を一時停止するか、いずれの同期も実行がスケジュールされていない時間帯に更新を計画します。これにより、認証情報の更新中に同期が開始されるのを防げます。
  4. 認証情報を編集 を選択し、新しいクライアントシークレットを入力して、保存 を選択します。この変更は、この認証情報を使用するすべてのソースと同期に適用されます。
  5. 一時停止した同期を再開します。
  6. Brazeが新しいシークレットを保存したら、Databricksで古いシークレットを削除します。

Personal access token

Brazeは、Databricksワークスペースで生成された個人アクセストークンを使用して認証します。既存の個人アクセストークンの認証情報は引き続き使用でき、移行する必要はありません。ただし、個人アクセストークンはワークスペース管理者が設定したスケジュールで期限切れになることが多く、トークンの期限が切れると同期が停止します。既存のソースをOAuth M2Mに移行するには、OAuth M2Mの認証情報を作成し、ソースを編集する際にその認証情報を選択します。

個人アクセストークンを作成するには、以下の手順に従います。

  1. Databricksワークスペースで、上部バーにあるDatabricksのユーザー名を選択し、ドロップダウンからUser Settingsを選択します。
  2. Access tokensタブで、Generate new tokenを選択します。
  3. このトークンを識別しやすいコメント(「Braze CDI」など)を入力し、Lifetime (days)ボックスを空のままにして、トークンの有効期間を無期限に設定します。
  4. Generateを選択します。
  5. 表示されたトークンをコピーし、Doneを選択します。

認証情報の作成ステップでBrazeダッシュボードに入力するまで、トークンを安全な場所に保管してください。

ステップ3: BrazeのIPへのアクセスを許可する

ネットワークポリシーを設定している場合は、BrazeにDatabricksインスタンスへのネットワークアクセスを許可する必要があります。Brazeダッシュボードのリージョンに対応する以下のIPからのアクセスを許可してください。

インスタンスUS-01、US-02、US-03、US-04、US-05、US-06、US-07の場合、関連するIPアドレスは次のとおりです。

  • 23.21.118.191
  • 34.206.23.173
  • 50.16.249.9
  • 52.4.160.214
  • 54.87.8.34
  • 54.156.35.251
  • 52.54.89.238
  • 18.205.178.15

インスタンスUS-08の場合、関連するIPアドレスは次のとおりです。

  • 52.151.246.51
  • 52.170.163.182
  • 40.76.166.157
  • 40.76.166.170
  • 40.76.166.167
  • 40.76.166.161
  • 40.76.166.156
  • 40.76.166.166
  • 40.76.166.160
  • 40.88.51.74
  • 52.154.67.17
  • 40.76.166.80
  • 40.76.166.84
  • 40.76.166.85
  • 40.76.166.81
  • 40.76.166.71
  • 40.76.166.144
  • 40.76.166.145

インスタンスUS-10の場合、関連するIPアドレスは次のとおりです。

  • 100.25.232.164
  • 35.168.86.179
  • 52.7.44.117
  • 3.92.153.18
  • 35.172.3.129
  • 50.19.162.19

インスタンスEU-01とEU-02の場合、関連するIPアドレスは次のとおりです。

  • 52.58.142.242
  • 52.29.193.121
  • 35.158.29.228
  • 18.157.135.97
  • 3.123.166.46
  • 3.64.27.36
  • 3.65.88.25
  • 3.68.144.188
  • 3.70.107.88

インスタンスAU-01の場合、関連するIPアドレスは次のとおりです。

  • 13.210.1.145
  • 13.211.70.159
  • 13.238.45.54
  • 52.65.73.167
  • 54.153.242.239
  • 54.206.45.213

インスタンスID-01の場合、関連するIPアドレスは次のとおりです。

  • 108.136.157.246
  • 108.137.30.207
  • 16.78.128.71
  • 16.78.14.134
  • 16.78.162.208
  • 43.218.73.35

インスタンスJP-01の場合、関連するIPアドレスは次のとおりです。

  • 13.159.155.212
  • 54.199.221.241
  • 13.192.23.16
  • 54.250.120.139
  • 18.181.114.232
  • 3.114.38.100

インスタンスKR-01の場合、関連するIPアドレスは次のとおりです。

  • 43.200.215.4
  • 52.79.67.175
  • 52.79.113.60
  • 3.34.212.92
  • 54.116.134.231
  • 3.37.197.225

ステップ4: Brazeダッシュボードで新しいソースを作成する

Brazeダッシュボードで、データ設定 > クラウドデータ取り込み > ソースに移動し、データソースを追加を選択してから、Databricksを選択します。

ステップ4.1: Databricksの接続情報とソーステーブルを追加する

ソースの名前を入力し、Databricksの認証情報と設定を入力します。

  • 認証情報名には、Brazeでこの認証情報を識別しやすいラベルを入力します。
  • 認証方法では、ステップ2で設定した方法を選択し、その認証情報を入力します。OAuth M2Mの場合は、Client ID and Client secretを入力します。 Personal access tokenの場合は、Access tokenを入力します。

その後、次のステップに進みます。

ステップ4.2: 接続をテストしてソースに接続する

次に、接続をテストを選択します。テストが成功したら、残りの設定を完了してソースに接続をクリックします。接続に失敗した場合は、問題のトラブルシューティングに役立つエラーメッセージが表示されます。

ステップ5: Brazeダッシュボードで新しい同期を作成する

データ設定 > クラウドデータ取り込み > 同期に移動し、データ同期を作成を選択します。

同期の詳細を設定してデータを定義する

同期の名前を入力します。次に、アクティブなソースと同期データタイプを選択します。続いて、ビジュアルまたはテーブルを選択してソーステーブルを入力するか、SQLを選択してカスタムSQLクエリを作成します。最後に、プレビューと検証を選択します。

検証が成功すると、データのプレビューが表示されます。次へ: 通知を選択して続行します。検証に失敗した場合は、問題のトラブルシューティングに役立つエラーメッセージが表示されます。

通知設定を追加する

同期エラー通知を受け取る連絡先メールアドレスを入力します。Brazeはこの連絡先情報を使用して、テーブルアクセスの予期しない喪失などの統合エラーに関する通知を送信します。

連絡先メールアドレスには、テーブルの欠落や権限の問題など、グローバルエラーまたは同期レベルのエラーの通知のみが送信されます。行レベルの問題は通知されません。グローバルエラーは、同期の実行を妨げる接続上の重大な問題を示しています。

このような問題には、次のようなものがあります。

  • 接続の問題
  • リソースの不足
  • 権限の問題
  • カタログ階層の容量不足 (カタログ同期のみ)

スケジュールを設定する

最後に、同期を非定期または定期として設定します。

非定期の同期は、ダッシュボードで 今すぐ同期 を選択するか、同期をトリガーするエンドポイントを呼び出したときにのみ実行されます。

定期的な同期は、最短で5分ごと、最長で月1回の間隔で実行できます。デフォルトでは、ダッシュボードで設定できる最短の間隔は15分です。これにより、ウェアハウスのコンピューティングコストとリクエスト量を管理しやすくなります。最短5分ごとに同期するには、Brazeサポートまたはカスタマーサクセスマネージャーにお問い合わせください。Brazeは定期的な同期をUTCでスケジュールします。

同期を実行する

有効化すると、同期は設定時に構成したスケジュールで実行されます。スケジュール外で同期を実行したい場合や、最新のデータを取得したい場合は、今すぐ同期を選択します。この実行は、今後の定期的にスケジュールされた同期には影響しません。データの更新時に同期を自動的に開始するには、パイプラインから同期をトリガーするエンドポイントを呼び出します。

追加の統合またはユーザーを設定する (オプション)

Brazeでは複数の統合を設定できます。追加の同期を作成する際、同じDatabricksアカウントに接続する場合は既存の認証情報を再利用できます。

複数の統合で同じユーザーを再利用している場合、そのユーザーをすべてのアクティブな同期から削除するまで、Brazeダッシュボードでユーザーを削除することはできません。

Databricksを接続されたソースとして使用する

接続されたソースは、Brazeにデータを同期する代わりとなるゼロコピーの方法です。Brazeは基礎となるデータをコピーすることなく、Databricksインスタンスに直接クエリを実行してCDIセグメントを作成します。概念、制限事項、コストへの影響については、接続されたソースを参照してください。

ステップ1: 認証を設定して権限を付与する

ステップ2: 認証を設定するのいずれかの方法で、Braze用の認証情報を設定します。どの方法を選択した場合でも、Brazeはこの認証情報を使用して、CDIセグメントエクステンションで利用可能なテーブルの一覧を生成し、ソーステーブルにクエリを実行して新しいセグメントを作成します。接続されたソースが作成されると、Brazeはソーススキーマ内でユーザーが利用できるすべてのテーブルの名前と説明を検出します。

スキーマ内のすべてのテーブルへのアクセスを許可することも、特定のテーブルにのみ権限を付与することもできます。Brazeのロールがアクセスできるテーブルはすべて、CDIセグメントエクステンションでクエリを実行できます。

Brazeでセグメントを更新する前に、BrazeがCDIセグメントエクステンションのクエリ結果を格納するテーブルを作成できるよう、CREATE TABLE権限が必要です。Brazeはセグメントごとに一時テーブルを作成し、そのテーブルはBrazeがセグメントを更新している間のみ保持されます。

  • OAuth M2M: 接続されたソースに使用するスキーマへのアクセス権 (CREATE TABLEを含む) をサービスプリンシパルに付与します。付与先には、サービスプリンシパルのアプリケーションID (クライアントIDと同じ値) を使用します。

      GRANT USE CATALOG ON CATALOG `BRAZE-CLOUD-PRODUCTION` TO `APPLICATION_ID`;
      GRANT USE SCHEMA, CREATE TABLE ON SCHEMA `BRAZE-CLOUD-PRODUCTION`.INGESTION TO `APPLICATION_ID`;
      GRANT SELECT ON SCHEMA `BRAZE-CLOUD-PRODUCTION`.INGESTION TO `APPLICATION_ID`;
    

    APPLICATION_IDは、サービスプリンシパルのアプリケーションIDに置き換えてください。

  • パーソナルアクセストークン: 接続されたソースに使用するスキーマに対して、サービスアカウントがCREATE TABLE権限を持っていることを確認してください。

ネットワークアクセスの設定はステップ3と同じです。

ステップ2: Brazeで接続されたソースを作成する

データ設定 > クラウドデータ取り込み > 接続されたソースに移動し、データソースを追加を選択してから、Databricksを選択します。

ソースを設定で、次の情報を入力します。

  • 認証情報: 認証情報名、認証方法、ホスト名、HTTPパス、および認証方法に応じたフィールド。OAuth M2Mの場合は、Client ID and Client secretを入力します。 Personal access tokenの場合は、Access tokenを入力します。
  • 設定: カタログとスキーマ

接続されたソースの名前を選択します。この名前は、新しいCDIセグメントエクステンションを作成する際に、利用可能なソースの一覧に表示されます。

このソースの最大実行時間を設定します。Brazeは、最大実行時間を超えたクエリを自動的に中止します。許可される最大実行時間は60分です。実行時間を短くすると、Databricksアカウントで発生するコストを削減できます。この設定は、このソースを使用する同期やCDIセグメントエクステンションなど、このソースを通じて実行されるクエリに適用されます。

接続をテストを選択して、ユーザーに表示されるテーブルの一覧が想定どおりであることを確認し、完了を選択します。これで接続されたソースが作成され、CDIセグメントエクステンションで使用できるようになります。

Brazeでは複数の接続されたソースを設定できますが、各ソースはそれぞれ異なるスキーマに接続するように設定する必要があります。追加のソースを作成する際、同じDatabricksアカウントに接続する場合は既存の認証情報を再利用できます。

既存の列からペイロードをフォーマットする

社内で各属性を個別の列に保存したい場合は、Brazeとの同期にデータを取り込むために、それらの列をJSON文字列に変換する必要があります。Databricksで次のクエリを使用して、ソース列をCDIフィールドにフォーマットします。

CREATE OR REPLACE TABLE BRAZE.EXAMPLE_USER_DATA (
    attribute_1 string,
    attribute_2 STRING,
    attribute_3 NUMERIC,
    my_user_id STRING
);

SELECT
    CURRENT_TIMESTAMP as UPDATED_AT,
    my_user_id as EXTERNAL_ID,
    TO_JSON(
      STRUCT(
        attribute_1,
        attribute_2,
        attribute_3
      )
    ) as PAYLOAD
  FROM BRAZE.EXAMPLE_USER_DATA;

最適化に関するその他のガイダンスについては、クラウドデータ取り込みのベストプラクティスを参照してください。

トラブルシューティング

接続テストの実行が遅い

接続テストはデータウェアハウス上で実行されるため、ウェアハウスの容量を増やすと速度が向上する場合があります。Databricksの場合、BrazeがClassicおよびPro SQLインスタンスに接続する際に2~5分のウォームアップ時間が発生することがあり、接続の設定時やテスト時、およびスケジュールされた同期の開始時に遅延が生じます。サーバーレスSQLインスタンスを使用すると、ウォームアップ時間が最小限に抑えられ、クエリのスループットが向上しますが、統合コストがわずかに高くなる場合があります。

ウェアハウスが停止していたためコマンドが失敗した

このエラーが表示された場合は、Databricksのウェアハウスが実行中であることを確認してください。

Service: Amazon S3; Status Code: 403; Error Code: 403 Forbidden

このエラーが表示された場合は、Databricks: Forbidden error while accessing S3 dataを参照してください。

SQLチェックを実行する場所

検証チェックは、CDI統合で使用しているものと同じテーブルまたはビューに対して、SQLウェアハウス上のDatabricks SQLエディターで直接実行してください。詳細については、Databricks SQL editorを参照してください。

New Stuff!