KlaviyoのデータをDatabricksにエクスポートする方法
アドバンストKlaviyoデータプラットフォームはKlaviyoの標準マーケティングアプリケーションには含まれておらず、関連機能にアクセスするにはサブスクリプションが必要です。このプランの購入方法については、請求ガイドをご覧ください。
このページで学べること
Klaviyoが独自のDatabricksワークスペース内のDeltaテーブルにプロファイル、イベント、メトリックデータを継続的に書き込むように、Databricksを送信同期先として設定する方法をご覧ください。接続すると、データチームはKlaviyoデータをレイクハウスの他のデータと組み合わせて、分析、モデリング、レポート作成に活用できます。
代わりにDatabricksからKlaviyoにデータを取り込むことをご検討ですか?KlaviyoとDatabricksの接続をご覧ください。
始める前に
次のものが揃っていることを確認してください。
- Unity Catalogが有効になっているDatabricksワークスペース。Hiveメタストアのみのワークスペースはサポートされていません。Hiveメタストアを使用している場合は、Hiveメタストアフェデレーションを検討してください。
VARIANT列とセッションスコープの一時テーブルに対応し、Klaviyoがデータを書き込めるようにするSQLウェアハウスServerless SQLウェアハウスを推奨します。ClassicおよびProのウェアハウスは起動に数分かかる場合があり、同期が遅れる可能性があります。- 使用するカタログで、スキーマ、テーブル、付与(grant)を作成する権限(またはDatabricks管理者のサポート)。
- Klaviyoで外部連携を管理する権限。
- ワークスペースでIPアクセスリストを使用してインバウンドトラフィックを制限している場合は、Klaviyoの送信IPアドレスを許可リストに追加してください:
184.72.183.187/3252.206.71.52/323.227.146.32/3244.198.39.11/3235.172.58.121/323.228.37.244/3254.88.219.8/323.214.211.176/32
Klaviyoアカウントごとに設定できるデータウェアハウスのエクスポート先は1つのみです。すでに別のウェアハウス(例:SnowflakeまたはS3)にエクスポートしている場合は、Databricksを追加する前にそのエクスポート先を削除する必要があります。
ステップ1:Klaviyoデータのスキーマを作成する
Databricksでは、スキーマはカタログ内にあります。Klaviyoが書き込むテーブルを格納するための専用スキーマを作成してください。この記事全体で使用するSQLの例では、カタログにmain、スキーマにKLAVIYO_EXPORTを使用しています。別の名前を使用する場合は、すべてのSQLの例で置き換え、ステップ5でKlaviyoに同じ名前を入力してください。
USE CATALOG main; -- or your organization's designated catalog
CREATE SCHEMA IF NOT EXISTS KLAVIYO_EXPORT;手順2:宛先テーブルを作成する
手順1で作成したスキーマで、次のスクリプトを実行してください。Klaviyoは3つのテーブルに書き込みます:
klaviyo_profile:標準フィールド、場所、カスタムプロパティを含む、プロファイルごとに1行。klaviyo_event: プロファイルとメトリックに紐付けられたイベント(例:「注文の確定」または「メールの開封」)ごとに1行。klaviyo_metric:メトリックごとに1行。各イベントのメトリック名とソース外部連携を参照するために使用します。
カスタムプロファイルプロパティとイベントプロパティはVARIANT列に格納されるため、数百個の個別列を管理しなくても、ネストされたJSONを直接クエリできます。
USE SCHEMA main.KLAVIYO_EXPORT;
CREATE TABLE klaviyo_profile (
id STRING NOT NULL,
external_id STRING,
email STRING,
phone_number STRING,
first_name STRING,
last_name STRING,
title STRING,
organization STRING,
properties VARIANT,
image STRING,
created TIMESTAMP,
updated TIMESTAMP,
location_address1 STRING,
location_address2 STRING,
location_city STRING,
location_country STRING,
location_latitude STRING,
location_longitude STRING,
location_region STRING,
location_zip STRING,
PRIMARY KEY (id)
)
TBLPROPERTIES ('delta.feature.variantType-preview' = 'supported');
CREATE TABLE klaviyo_event (
id STRING NOT NULL,
metric_id STRING NOT NULL,
profile_id STRING,
event_properties VARIANT,
datetime TIMESTAMP,
uuid STRING,
PRIMARY KEY (id)
)
TBLPROPERTIES ('delta.feature.variantType-preview' = 'supported');
CREATE TABLE klaviyo_metric (
id STRING NOT NULL,
name STRING NOT NULL,
integration_id STRING,
integration_name STRING,
integration_category STRING,
created TIMESTAMP,
updated TIMESTAMP,
PRIMARY KEY (id)
);テーブル名は完全に一致している必要があります。Klaviyoは、セットアップ時に提供されたスキーマ内でklaviyo_profile、klaviyo_event、klaviyo_metricを検索します。
手順3:サービスプリンシパルとアクセストークンを作成する
Klaviyoは、個人用アクセストークン(PAT)を使用してDatabricksへの認証を行います。個人のアカウントではなく、この外部連携専用で使用するサービスプリンシパルを作成することを推奨します。
- Klaviyo用にサービスプリンシパル(またはワークスペースユーザー)を作成します。
- パーソナルアクセストークンを生成してください:
- サービスプリンシパル:ワークスペース管理者に、Databricks CLIで初期トークンを作成してもらってください。
- ワークスペースユーザー:Databricks UIでトークンを作成する。
- トークンは安全な場所に保管してください。ステップ5でKlaviyoに貼り付けます。
アクセストークンはパスワードと同様に扱ってください。トークンを持っている人は誰でも、関連付けられたアカウントの権限でDatabricksにアクセスできます。定期的に、またスタッフの変更後にローテーションしてください。
すでにDatabricksからのインポート用にサービスプリンシパルを作成している場合は、それを再利用できます。手順4でエクスポート権限を追加するだけです。
ステップ4:権限を付与
Klaviyoサービスプリンシパルに、カタログ、スキーマ、SQLウェアハウスへのアクセス権を付与してください。klaviyo_service_userを、サービスプリンシパルのアプリケーションIDまたはユーザー名に置き換えてください。
GRANT USE CATALOG ON CATALOG main TO `klaviyo_service_user`;
GRANT USE SCHEMA, SELECT, MODIFY ON SCHEMA main.KLAVIYO_EXPORT TO `klaviyo_service_user`;権限 | 目的 |
|---|---|
| Klaviyoがエクスポートスキーマを含むカタログにアクセスできるようにします。 |
| Klaviyoがエクスポートスキーマにアクセスできるようにします。 |
| Klaviyoが既存の行を読み取り、重複ではなくレコードを更新できるようにします。 |
| Klaviyoが宛先テーブルの行を挿入、更新、削除できるようにします。 |
また、使用予定のSQLウェアハウスで、サービスプリンシパルにCan use権限を付与してください。DatabricksでSQL Warehousesに移動し、ウェアハウスを選択して、Permissionsをクリックし、サービスプリンシパルを追加してください。
設定を確認する(任意)
Klaviyoに付与するのと同じIDとトークンを使用して、テーブルと権限付与を確認してください。
SHOW TABLES IN main.KLAVIYO_EXPORT;
SHOW GRANTS ON SCHEMA main.KLAVIYO_EXPORT;3つのテーブルすべてが表示され、サービスプリンシパルがUSE SCHEMA、SELECT、MODIFYで一覧に表示されているはずです。
手順5:KlaviyoでDatabricksに接続する
- Klaviyoで、[アドバンスト] > [データ管理] > [同期]と進みます。
- すでに同期がある場合は、同期を作成をクリックしてください。
- データをデータウェアハウスにエクスポートを選択します。
- Databricksを選択し、次にDatabricksに接続をクリックしてください。
- 接続の詳細を入力してください:
フィールド | 説明 | 確認場所 |
|---|---|---|
名前 | この接続を識別するための名前です。 | Klaviyoエクスポートなど、内容がわかる名前を入力してください。 |
サーバーホスト名 | Databricksワークスペースのホスト。 | Databricksにログインしているときの、ブラウザのアドレスバー。例: |
HTTP パス | Klaviyoが使用するSQLウェアハウスのHTTPパス。 | SQLウェアハウス > ウェアハウスを選択 > 接続の詳細。例: |
カタログ | エクスポートスキーマを含むカタログ。 | 手順1で使用したカタログ(例: |
スキーマ | 3つのKlaviyoテーブルを含むスキーマ。 | ステップ1で作成したスキーマ(例: |
アクセストークン | 作成したサービスプリンシパルまたはワークスペースユーザーのパーソナルアクセストークン。 | 手順3で生成したトークン。 |
同期を設定するには次へをクリックしてください。
また、[外部連携] > [アプリを探す]に移動してDatabricksを検索すると、KlaviyoのアプリマーケットプレイスでDatabricksを見つけることもできます。
ステップ6:データ同期を設定します
KlaviyoがDatabricksに送信する内容と、同期するタイミングを選択してください。
データオブジェクト
プロファイル、イベント、または両方を同期するように選択します。メトリックデータはイベントと一緒に同期されるため、各イベントのメトリック名とソースを参照できます。
Klaviyoからすべてのデータを同期すると、Databricksのコンピュートおよびストレージのコストが増加する可能性があります。
除外する外部連携
Databricksに送信したくないイベントがある外部連携を選択してください。これはイベントデータのみに適用されます。プロファイルは除外されません。
選択的同期
「注文の確定」など、同期するイベントのメトリックを選択してください。除外していない外部連携からすべてのイベントを同期するには、選択的同期を空のままにしてください。このフィールドは、イベントデータオブジェクトを選択した場合にのみ表示されます。
同期の頻度
毎回で、新規および更新されたデータを同期する頻度を選択します:1、2、4、6、12、または24時間ごと。デフォルトは1時間です。スケジュールの開始日、開始時間、タイムゾーンを設定してください。
履歴データ
初回同期時に送信する履歴データの量を選択してください:
- 30 日
- 90 日
- 1 年
- 全期間
大規模な過去データの同期は完了までに時間がかかる場合があり、Databricksのコストが増加する可能性があります。最近のデータのみが必要な場合は、より短い期間から始めることを検討してください。
ステップ7:同期を確認し、接続して、モニタリングする
- 次へをクリックしてレビューを開きます。接続の詳細、共有データ、除外する外部連携、選択したメトリック、初期データ同期範囲を確認してください。
- [接続]をクリックします。Klaviyoは接続をテストし、テストが成功した場合はエクスポートを作成します。
セットアップが成功すると、Klaviyoは確認メッセージを表示し、同期中に戻ります。エクスポートは有効になっており、そこで同期ステータスを監視できます。
接続テストが失敗した場合は、エラーの詳細を確認してください。接続の詳細を修正するには認証情報を編集をクリックし、次にデータ設定で次へをクリックして確認に戻り、再度接続をクリックしてください。
同期をモニタリングするには、Advanced > Data management > Syncingに移動し、Exportとマークされた行でDatabricksをクリックしてください。次のタブを使用してください:
- 履歴: 初回バックフィルのステータス。
- 定期:選択した周期での同期のステータス(データの鮮度(DatabricksテーブルがKlaviyoからどれだけ遅れているか)を含む)。
- 設定:接続の詳細、データの選択、同期の頻度、過去データの範囲を表示および編集します。保存するには、変更するセクションで情報を更新をクリックしてください。
同期ステータス、同期の一時停止と再開、エラーログの確認の詳細については、Klaviyoでのデータウェアハウス同期について理解するをご覧ください。
DatabricksでKlaviyoデータをクエリする
使い始めるにあたっての例をいくつかご紹介します。
過去7日間のメトリック名別イベント数:
SELECT m.name AS metric, COUNT(*) AS events
FROM main.KLAVIYO_EXPORT.klaviyo_event e
JOIN main.KLAVIYO_EXPORT.klaviyo_metric m ON e.metric_id = m.id
WHERE e.datetime >= current_timestamp() - INTERVAL 7 DAYS
GROUP BY m.name
ORDER BY events DESC;propertiesのバリエーション列からカスタムプロファイルプロパティを読み取ります:
SELECT id, email, properties:loyalty_tier::STRING AS loyalty_tier
FROM main.KLAVIYO_EXPORT.klaviyo_profile
WHERE properties:loyalty_tier IS NOT NULL;「注文の確定」イベントから注文金額を取得します:
SELECT e.profile_id, e.datetime, e.event_properties:`$value`::DOUBLE AS order_value
FROM main.KLAVIYO_EXPORT.klaviyo_event e
JOIN main.KLAVIYO_EXPORT.klaviyo_metric m ON e.metric_id = m.id
WHERE m.name = 'Placed Order';トラブルシューティング
問題 | 確認事項 |
|---|---|
接続テストが認証エラーで失敗しました。 | ホスト名に |
接続テストが権限エラーで失敗しました | 手順4の付与(grant)を確認します。 |
Klaviyoが宛先テーブルを見つけられません | Klaviyoのカタログとスキーマが手順2のスクリプトを実行した場所と一致していること、またテーブル名が |
| SQLウェアハウスが |
同期の開始に時間がかかっています | ClassicおよびProのSQLウェアハウスは、起動に数分かかる場合があります。サーバーレスSQLウェアハウスを使用するか、ウェアハウスの自動停止時間を延長してください。 |
リクエストはブロックされています | ワークスペースでIPアクセスリストを使用している場合は、事前準備に記載されているKlaviyoのIPアドレスを許可リストに追加してください。 |
Databricksエクスポートを削除する
エクスポートを削除すると、今後の同期が停止します。すでにDatabricksのテーブルに書き込まれているデータは削除されません。
- Klaviyoで外部連携に移動してください。
- Databricksエクスポート外部連携の横にあるメニューを開き、外部連携を削除を選択してください。
- 確認ダイアログで外部連携を削除をクリックしてください。