Snowflake向けクラウドデータ取り込み
このページでは、クラウドデータ取り込み(CDI)を使用してSnowflakeからBrazeにデータを同期するために必要なすべての情報を説明します。Snowflakeで作成するリソース、Brazeでソースを接続して同期を作成する方法、データタイプごとのソーステーブル、Snowflake固有のトラブルシューティングを取り上げます。
設定の概要
- Snowflakeインスタンスで、Brazeに同期するテーブルまたはビューを設定します。
- Braze用のロールとウェアハウスを設定します。
- サポートされている認証方法のいずれかを使用して、Braze用のSnowflakeユーザーを設定します。
- Brazeダッシュボードで新しいSnowflakeソースを作成し、Snowflakeで認証を完了します。
- Brazeダッシュボードで同期を作成し、統合を検証して同期を開始します。

Snowflakeクイックスタートガイドでは、サンプルコードを提供し、Snowflake StreamsとCDIを使用してBrazeにデータを同期する自動パイプラインを作成するために必要なステップを順を追って説明しています。
ステップ 1: ソーステーブルを設定する
このセクションのステップでは、PAYLOAD 列を持つテーブルを作成します。データ定義ステップでビジュアルを使用して列をマッピングする場合、またはSQLでクエリを記述する場合は、代わりに既存のテーブルまたはビューを使用できます。テーブル作成ステップをスキップし、同期するテーブルまたはビューへの読み取りアクセス権をBrazeに付与してください。各オプションの比較については、データ定義オプションを選択するを参照してください。
データベース、スキーマ、テーブルには任意の名前を付けることができますが、列名は以下のタブの定義と一致させる必要があります。テーブルの代わりにビューまたはマテリアライズドビューを使用することもできます。

PAYLOAD 列を使用する場合、ソーステーブルまたはビューには、以下のタブに記載されていない列(監査やハッシュ化用の列など)を含めることができます。Brazeはこれらのタブで説明されている列のみを読み取ります。その他の列は、クラウドデータ取り込みの同期では使用されません。
同期するデータタイプのタブを選択してください。
ユーザー属性、カスタムイベント、購入イベントはすべて同じ形式のソーステーブルを使用します。異なるのは PAYLOAD の内容のみです。
CREATE DATABASE BRAZE_CLOUD_PRODUCTION;
CREATE SCHEMA BRAZE_CLOUD_PRODUCTION.INGESTION;
CREATE OR REPLACE TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.USERS_ATTRIBUTES_SYNC (
UPDATED_AT TIMESTAMP_NTZ(9) NOT NULL DEFAULT SYSDATE(),
--at least one of external_id, alias_name and alias_label, email, phone, or braze_id is required
EXTERNAL_ID VARCHAR(16777216),
--if using user alias, both alias_name and alias_label are required
ALIAS_LABEL VARCHAR(16777216),
ALIAS_NAME VARCHAR(16777216),
--braze_id can only be used to update existing users created through the Braze SDK
BRAZE_ID VARCHAR(16777216),
--If you include both email and phone, email is used as the primary identifier
EMAIL VARCHAR(16777216),
PHONE VARCHAR(16777216),
PAYLOAD VARCHAR(16777216) NOT NULL
);
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のユーザーに同期するフィールドのJSON文字列です。
属性の同期では、PAYLOAD はユーザー属性オブジェクトの形式に従います。階層化カスタム属性、オブジェクトの配列、購読グループのステータスを含めることができます。ペイロードの例については、テーブルの設定を参照してください。
カスタムイベントは、ユーザー属性と同じソーステーブルを使用します。ユーザー属性タブに示されているテーブルを作成し、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"
}
}
購入イベントは、ユーザー属性と同じソーステーブルを使用します。ユーザー属性タブに示されているテーブルを作成し、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 DATABASE BRAZE_CLOUD_PRODUCTION;
CREATE SCHEMA BRAZE_CLOUD_PRODUCTION.INGESTION;
CREATE OR REPLACE TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.CATALOGS_SYNC (
UPDATED_AT TIMESTAMP_NTZ(9) NOT NULL DEFAULT SYSDATE(),
--ID of the catalog item to be created or updated
ID VARCHAR(16777216) NOT NULL,
--Catalog fields and values that should be added or updated
PAYLOAD VARCHAR(16777216) NOT NULL,
--The catalog item associated with this ID should be deleted
DELETED BOOLEAN
);
他のソーステーブルとあわせて、このテーブルへのアクセス権をBrazeロールに付与します。
GRANT SELECT ON TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.CATALOGS_SYNC TO ROLE BRAZE_INGESTION_ROLE;
統合の名前は、Brazeで作成したカタログの名前と完全に一致している必要があります。
同期を実行するたびにソーステーブルが完全に更新されるように、カタログデータからビューを作成することをお勧めします。たとえば、product_id と3つの追加属性を持つ製品データのテーブル(product_catalog_1)がある場合、次のビューを同期できます。
CREATE VIEW BRAZE_CLOUD_PRODUCTION.INGESTION.CATALOGS_SYNC AS
SELECT
CURRENT_TIMESTAMP as UPDATED_AT,
product_id as id,
TO_JSON(
OBJECT_CONSTRUCT (
'attribute_1',
attribute_1,
'attribute_2',
attribute_2,
'attribute_3',
attribute_3)
)as PAYLOAD FROM "product_catalog_1";
キャンバストリガーは、ゼロコピーパーソナライゼーションを実現します。同期先のキャンバスの設定と考慮事項については、ゼロコピーパーソナライゼーションを参照してください。
CREATE DATABASE BRAZE_CLOUD_PRODUCTION;
CREATE SCHEMA BRAZE_CLOUD_PRODUCTION.INGESTION;
CREATE OR REPLACE TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.CANVAS_TRIGGERS_SYNC (
UPDATED_AT TIMESTAMP_NTZ(9) NOT NULL DEFAULT SYSDATE(),
--at least one of external_id or alias_name and alias_label is required
EXTERNAL_ID VARCHAR(16777216),
--if using user alias, both alias_name and alias_label are required
ALIAS_LABEL VARCHAR(16777216),
ALIAS_NAME VARCHAR(16777216),
PROPERTIES VARCHAR(16777216)
);
キャンバストリガーの同期は、他のユーザーデータの同期と次の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 文字列です。ユーザー固有の情報を含める必要があります。

プロパティは、すべての行やユーザーに必須というわけではありません。ただし、プロパティの値は有効な JSON 文字列である必要があります。行にプロパティがない場合は、空の {} 文字列を入力してください。
このテーブルへのアクセス権をBrazeロールに付与します。
GRANT SELECT ON TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.CANVAS_TRIGGERS_SYNC TO ROLE BRAZE_INGESTION_ROLE;
開始するには、新しい同期を作成する際にキャンバストリガーデータタイプを選択します。
ユーザー削除用のソーステーブルには、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 またはユーザーエイリアスを指定してください。

ユーザー削除用のテーブルには PAYLOAD 列を含めないでください。ユーザーが誤って完全に削除されるのを防ぐため、ソーステーブルにペイロード列が含まれている場合、同期は失敗します。その他の列は含めてもかまいませんが、Braze では無視されます。
CREATE OR REPLACE TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.USERS_DELETES (
UPDATED_AT TIMESTAMP_NTZ(9) NOT NULL DEFAULT SYSDATE(),
--at least one of external_id, alias_name and alias_label, or braze_id is required
EXTERNAL_ID VARCHAR(16777216),
--if using user alias, both alias_name and alias_label are required
ALIAS_LABEL VARCHAR(16777216),
ALIAS_NAME VARCHAR(16777216),
--braze_id can only be used to update existing users created through the Braze SDK
BRAZE_ID VARCHAR(16777216)
);
統合の実行時に適切なアクションが実行されるように、インポート同期を作成ページでデータタイプをユーザーを削除に設定します。詳細については、クラウドデータ取り込みでユーザーを削除するを参照してください。

ユーザープロファイルの削除は元に戻せません。削除アクションはユーザーを完全に削除するため、データに不一致が生じる可能性があります。詳細については、ユーザープロファイルの削除による影響を参照してください。
ステップ 2: ロールとウェアハウスを設定する
ステップ 2.1: ロールとデータベースの権限を設定する
CREATE ROLE BRAZE_INGESTION_ROLE;
GRANT USAGE ON DATABASE BRAZE_CLOUD_PRODUCTION TO ROLE BRAZE_INGESTION_ROLE;
GRANT USAGE ON SCHEMA BRAZE_CLOUD_PRODUCTION.INGESTION TO ROLE BRAZE_INGESTION_ROLE;
GRANT SELECT ON TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.USERS_ATTRIBUTES_SYNC TO ROLE BRAZE_INGESTION_ROLE;
名前は必要に応じて変更してかまいませんが、権限は上記の例と一致させる必要があります。
ステップ 2.2: ウェアハウスを設定し、Brazeロールにアクセス権を付与する
CREATE WAREHOUSE BRAZE_INGESTION_WAREHOUSE;
GRANT USAGE ON WAREHOUSE BRAZE_INGESTION_WAREHOUSE TO ROLE BRAZE_INGESTION_ROLE;

ウェアハウスでは auto-resume フラグをオンにする必要があります。オンにしない場合は、クエリの実行時にBrazeがウェアハウスをオンにできるように、ウェアハウスに対する追加の OPERATE 権限をBrazeに付与してください。
ステップ 2.3: SnowflakeネットワークポリシーでBrazeのIPを許可する(オプション)
Snowflakeアカウントの構成によっては、Snowflakeネットワークポリシーで次のIPアドレスを許可する必要がある場合があります。これを有効にする方法の詳細については、ネットワークポリシーの変更に関するSnowflakeのドキュメントを参照してください。
インスタンスUS-01、US-02、US-03、US-04、US-05、US-06、US-07の場合、関連するIPアドレスは次のとおりです。
23.21.118.19134.206.23.17350.16.249.952.4.160.21454.87.8.3454.156.35.25152.54.89.23818.205.178.15
インスタンスUS-08の場合、関連するIPアドレスは次のとおりです。
52.151.246.5152.170.163.18240.76.166.15740.76.166.17040.76.166.16740.76.166.16140.76.166.15640.76.166.16640.76.166.16040.88.51.7452.154.67.1740.76.166.8040.76.166.8440.76.166.8540.76.166.8140.76.166.7140.76.166.14440.76.166.145
インスタンスUS-10の場合、関連するIPアドレスは次のとおりです。
100.25.232.16435.168.86.17952.7.44.1173.92.153.1835.172.3.12950.19.162.19
インスタンスEU-01とEU-02の場合、関連するIPアドレスは次のとおりです。
52.58.142.24252.29.193.12135.158.29.22818.157.135.973.123.166.463.64.27.363.65.88.253.68.144.1883.70.107.88
インスタンスAU-01の場合、関連するIPアドレスは次のとおりです。
13.210.1.14513.211.70.15913.238.45.5452.65.73.16754.153.242.23954.206.45.213
インスタンスID-01の場合、関連するIPアドレスは次のとおりです。
108.136.157.246108.137.30.20716.78.128.7116.78.14.13416.78.162.20843.218.73.35
インスタンスJP-01の場合、関連するIPアドレスは次のとおりです。
13.159.155.21254.199.221.24113.192.23.1654.250.120.13918.181.114.2323.114.38.100
インスタンスKR-01の場合、関連するIPアドレスは次のとおりです。
43.200.215.452.79.67.17552.79.113.603.34.212.9254.116.134.2313.37.197.225
ステップ 3: 認証を設定する
Brazeは、ステップ2で作成したロールを持つSnowflakeユーザーとしてSnowflakeに接続します。次のいずれかの認証方法を使用してユーザーを設定します。
| 方法 | Brazeによる認証方法 | Brazeで入力する内容 |
|---|---|---|
| Key pair authentication | Braze generates an RSA key pair and connects as a Snowflake user that has the public key assigned. | Username and Role |
Key pair authentication
キーペア認証では、Braze ダッシュボードで認証情報を保存すると、BrazeがRSAキーペアを生成します。Brazeが接続に使用する Snowflake ユーザーに公開キーを割り当てます。
ユーザーを設定する
Braze 用のユーザーを作成し、作成したロールを付与します。
CREATE USER BRAZE_INGESTION_USER;
GRANT ROLE BRAZE_INGESTION_ROLE TO USER BRAZE_INGESTION_USER;

異なるワークスペースを同じ Snowflake アカウントに接続する場合は、統合を作成する Braze ワークスペースごとに一意のユーザーを作成する必要があります。1つのワークスペース内では、複数の統合で同じユーザーを再利用できますが、同じ Snowflake アカウントのユーザーが複数のワークスペースで重複していると、統合の作成に失敗します。
ユーザーに公開キーを追加する
このステップは、Braze ダッシュボードで認証情報を入力し、認証情報を保存を選択した後に完了してください。Brazeがキーペアを生成し、公開キーを表示します。Braze 用に作成したユーザーに公開キーを追加します。
ALTER USER BRAZE_INGESTION_USER SET RSA_PUBLIC_KEY='MIIBIjANBgkqhkiG9w0BA...';
キーを割り当てるには、Snowflakeで SECURITYADMIN 以上のアクセス権が必要です。詳細については、Snowflakeのドキュメントを参照してください。
キーをローテーションするには、クラウドデータ取り込みのデータアクセス管理に移動し、該当するアカウントの新しいキーを生成を選択します。その後、新しい公開キーをユーザーに割り当てます。複数の統合で同じユーザーとロールを再利用している場合は、公開キーを再度追加する必要はありません。
ステップ 4: Brazeダッシュボードで新しいソースを作成する
Brazeダッシュボードで、データ設定 > クラウドデータ取り込み > ソースに移動し、データソースを追加を選択してから、Snowflakeを選択します。
ステップ 4.1: Snowflakeの接続情報を追加する
ソースの名前を決め、Snowflakeの認証情報と構成を入力してから、次のステップに進みます。ステップ3で設定した認証方法を選択し、その認証情報を入力します。
- Key pair authentication: Username and Role
続行する前に、Snowflakeアカウントロケーターに入力する値を確認してください。
Snowflakeアカウントロケーターフィールドには、Snowflakeのアカウント識別子を入力します。myorganization-myaccount のように、アカウント識別子の値のみを入力してください。https://、.snowflakecomputing.com、またはパスは含めないでください。
Snowflakeアカウント識別子を確認するには、次の手順を実行します。
- Snowsightで、アカウントメニューを選択します。
- View account details を選択します。
- Account identifier の値をコピーします。
- SnowflakeのURLからコピーする場合は、
.snowflakecomputing.comより前の値のみを使用します。
ステップ 4.2: Snowflakeで認証を完了する
認証情報と構成を入力したら、認証情報を保存を選択します。キーペア認証の場合、BrazeはRSAキーペアを生成し、公開キーを表示します。Snowflakeに戻り、Braze用に作成したユーザーに公開キーを追加します。
ステップ 5: Brazeダッシュボードで新しい同期を作成する
データ設定 > クラウドデータ取り込み > 同期に移動し、データ同期を作成を選択します。
同期の詳細を構成し、データを定義する
同期の名前を入力します。次に、アクティブなソースと同期データタイプを選択します。続いて、ビジュアルまたはテーブルを選択してソーステーブルを入力するか、SQLを選択してカスタムSQLクエリを記述します。最後に、プレビューと検証を選択します。
検証が成功すると、データのプレビューが表示されます。次へ:通知を選択して続行します。検証が失敗した場合は、問題のトラブルシューティングに役立つエラーメッセージが表示されます。

次のステップに進む前に、同期の検証を成功させる必要があります。同期作成ページを閉じる必要がある場合は、下書きとして保存を選択して作業中の内容を保持してください。
通知設定を追加する
同期エラー通知を受け取る連絡先メールアドレスを入力します。Brazeはこの連絡先情報を使用して、テーブルアクセスの予期しない喪失などの統合エラーに関する通知を送信します。
連絡先メールアドレスには、テーブルの欠落や権限の問題など、グローバルエラーまたは同期レベルのエラーの通知のみが送信されます。行レベルの問題は通知されません。グローバルエラーは、同期の実行を妨げる接続上の重大な問題を示しています。
このような問題には、次のようなものがあります。
- 接続の問題
- リソースの不足
- 権限の問題
- カタログ階層の容量不足 (カタログ同期のみ)
スケジュールを設定する
最後に、同期を非定期または定期として設定します。
非定期の同期は、ダッシュボードで 今すぐ同期 を選択するか、同期をトリガーするエンドポイントを呼び出したときにのみ実行されます。
定期的な同期は、最短で5分ごと、最長で月1回の間隔で実行できます。デフォルトでは、ダッシュボードで設定できる最短の間隔は15分です。これにより、ウェアハウスのコンピューティングコストとリクエスト量を管理しやすくなります。最短5分ごとに同期するには、Brazeサポートまたはカスタマーサクセスマネージャーにお問い合わせください。Brazeは定期的な同期をUTCでスケジュールします。

統合を下書き状態からアクティブ状態に移行するには、統合の検証を成功させる必要があります。作成ページを閉じても統合は保存されるため、詳細ページに戻って変更や検証を行うことができます。
同期を実行する
有効化すると、同期は設定時に構成したスケジュールで実行されます。スケジュール外で同期を実行する場合や最新のデータを取得する場合は、今すぐ同期を選択します。この実行は、今後定期的にスケジュールされている同期には影響しません。データの更新時に同期を自動的に開始するには、パイプラインから同期をトリガーするエンドポイントを呼び出します。
追加の統合またはユーザーを設定する(オプション)
Brazeでは複数の統合を設定できます。追加の同期を作成する際、Snowflakeアカウントに接続する場合は既存の認証情報を再利用できます。
統合間で同じユーザーとロールを再利用する場合、公開キーを再度追加する必要はありません。
Snowflakeを接続されたソースとして使用する
接続されたソースは、Brazeにデータを同期する代わりとなるゼロコピーの手段です。Brazeは基になるデータをコピーすることなく、Snowflakeインスタンスに直接クエリを実行してCDIセグメントを作成します。概念、制限事項、コストへの影響については、接続されたソースを参照してください。
ステップ 1: ロールを作成して権限を付与する
接続されたソースで使用するロールを作成します。このロールは、CDIセグメントエクステンションで使用可能なテーブルの一覧を生成するため、およびソーステーブルにクエリを実行して新しいセグメントを作成するために使用されます。接続されたソースが作成されると、Brazeはソーススキーマ内でユーザーが使用できるすべてのテーブルの名前と説明を検出します。
スキーマ内のすべてのテーブルへのアクセス権を付与することも、特定のテーブルのみに権限を付与することもできます。Brazeロールがアクセスできるテーブルはすべて、CDIセグメントエクステンションでクエリの対象として使用できます。
Brazeでセグメントを更新する前に、BrazeがCDIセグメントエクステンションのクエリ結果を格納するテーブルを作成できるように、create table 権限が必要です。Brazeはセグメントごとに一時テーブルを作成し、そのテーブルはBrazeがセグメントを更新している間のみ存続します。
CREATE ROLE BRAZE_INGESTION_ROLE;
GRANT USAGE ON DATABASE BRAZE_CLOUD_PRODUCTION TO ROLE BRAZE_INGESTION_ROLE;
GRANT USAGE ON SCHEMA BRAZE_CLOUD_PRODUCTION.INGESTION TO ROLE BRAZE_INGESTION_ROLE;
GRANT CREATE TABLE ON SCHEMA BRAZE_CLOUD_PRODUCTION.INGESTION TO ROLE BRAZE_INGESTION_ROLE;
-- grant access to all current and future tables or views in the schema
GRANT SELECT ON ALL TABLES IN SCHEMA BRAZE_CLOUD_PRODUCTION.INGESTION TO ROLE BRAZE_INGESTION_ROLE;
GRANT SELECT ON FUTURE TABLES IN SCHEMA BRAZE_CLOUD_PRODUCTION.INGESTION TO ROLE BRAZE_INGESTION_ROLE;
-- grant access to specific tables or views in the schema
GRANT SELECT ON TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.USERS_ATTRIBUTES_SYNC TO ROLE BRAZE_INGESTION_ROLE;
ウェアハウスの設定はステップ2.2と、ネットワークポリシーの設定はステップ2.3と同じです。Brazeが接続に使用するユーザーは、ステップ3:認証を設定するのいずれかの方法で設定します。
ステップ 2: Brazeで接続されたソースを作成する
データ設定 > クラウドデータ取り込み > 接続されたソースに移動し、データソースを追加を選択してから、Snowflakeを選択します。
ソースを設定で、次の情報を入力します。
- 認証情報: アカウントロケーターと、ご使用の認証方法のフィールド。Username and Roleを入力します。
- 構成: ウェアハウス、データベース、スキーマ
キーペア認証で新しいSnowflake認証情報を作成する場合は、接続をテストする前に認証情報を保存してRSAキーを生成を選択します。
接続されたソースの名前を決めます。この名前は、新しいCDIセグメントエクステンションを作成する際に、使用可能なソースの一覧に表示されます。
このソースの最大実行時間を構成します。Brazeは、最大実行時間を超えたクエリを自動的に中止します。許可される最大実行時間は60分です。実行時間を短くすると、Snowflakeアカウントで発生するコストを削減できます。この設定は、このソースを使用する同期やCDIセグメントエクステンションなど、このソースを通じて実行されるクエリに適用されます。
キーペア認証の場合は、接続をテストステップで表示されるRSA公開キーを控えておいてください。Snowflakeで統合を完了する際に必要になります。
ステップ 3: Snowflakeの構成を完了する
キーペア認証の場合は、ユーザーに公開キーを追加するの説明に従って、前のステップで控えておいた公開キーをSnowflakeのユーザーに追加します。これにより、BrazeがSnowflakeに接続できるようになります。
Snowflakeで認証を完了したら、Brazeで接続をテストを選択し、完了を選択します。これで接続されたソースが作成され、CDIセグメントエクステンションで使用できるようになります。
Brazeでは複数の接続されたソースを設定できますが、各ソースはそれぞれ異なるスキーマに接続するように構成する必要があります。追加の接続を作成する際、同じSnowflakeアカウントに接続する場合は既存の認証情報を再利用できます。統合間で同じユーザーとロールを再利用する場合、公開キーを再度追加する必要はありません。
既存の列からペイロードを形成する
社内で各属性を個別の列に保存したい場合は、Brazeとの同期にデータを入力するために、それらの列をJSON文字列に変換する必要があります。Snowflakeで次のクエリを使用して、ソース列をCDIフィールドに整形します。
CREATE TABLE "EXAMPLE_USER_DATA"
(attribute_1 string,
attribute_2 string,
attribute_3 number,
my_user_id string);
SELECT
CURRENT_TIMESTAMP as UPDATED_AT,
my_user_id as EXTERNAL_ID,
TO_JSON(
OBJECT_CONSTRUCT (
'attribute_1',
attribute_1,
'attribute_2',
attribute_2,
'yet_another_attribute',
attribute_3)
)as PAYLOAD FROM "EXAMPLE_USER_DATA";
属性を null に設定するのではなく完全に削除するには、TO_JSON(OBJECT_CONSTRUCT_KEEP_NULL(...)) を使用します。
最適化に関するその他のガイダンスについては、クラウドデータ取り込みのベストプラクティスを参照してください。
トラブルシューティング
接続テストの実行が遅い
接続テストはデータウェアハウス上で実行されるため、ウェアハウスの容量を増やすと速度が向上する場合があります。サーバーレスSQLインスタンスを使用するとウォームアップ時間が最小限に抑えられ、クエリのスループットが向上しますが、統合コストがわずかに高くなる可能性があります。
Snowflakeインスタンスへの接続エラー:Incoming request with IP is not allowed to access Snowflake
Brazeの公式IPをIP許可リストに追加してみてください。詳細については、SnowflakeネットワークポリシーでBrazeのIPを許可するを参照してください。
顧客の構成によるSQL実行エラー:002003 (42S02): SQL compilation error: does not exist or not authorized
テーブルが存在しない場合は、テーブルを作成してください。テーブルが存在する場合は、ユーザーとロールにテーブルからの読み取り権限があることを確認してください。
Could not use schema
このエラーが表示された場合は、指定されたユーザーまたはロールにそのスキーマへのアクセス権を付与してください。
Could not use role
このエラーが表示された場合は、そのユーザーが指定されたロールを使用できるようにしてください。
User access disabled
このエラーが表示された場合は、そのユーザーにSnowflakeアカウントへのアクセスを許可してください。
現在のキーと古いキーでのSnowflakeインスタンスへの接続エラー
このエラーが表示された場合は、Brazeダッシュボードに表示されている現在の公開キーをユーザーが使用していることを確認してください。キーをローテーションするには、ユーザーに公開キーを追加するを参照してください。
SQLチェックを実行する場所
CDI統合で使用しているのと同じテーブルまたはビューに対して、Snowflake SQLエディターで直接検証チェックを実行します。Projects > Worksheets に移動します。詳細については、Snowflake Worksheetsを参照してください。
関連ページ
- 必須の列とペイロードの形式については、テーブルの設定を参照してください。
- 同期のスケジュール設定とデータポイントの効率化については、ベストプラクティスを参照してください。
- 同期実行のモニタリングについては、同期ログとオブザーバビリティを参照してください。
- すべてのソースに共通する質問については、よくある質問を参照してください。