Klaviyo のデータウェアハウス イベント インポートについて理解する
注意:データウェアハウスのインポートは アドバンストKDPの機能の一部であり、Klaviyoの標準マーケティングアプリケーションには含まれません。この機能にアクセスするにはサブスクリプションが必要です。
Klaviyo のデータウェアハウス イベント インポートについて理解する
このページで学べること
データウェアハウスのイベント インポート を使用してウェアハウスからイベント データを Klaviyo に同期する方法について説明します。これにより、Klaviyo のネイティブな外部連携(例: POS システム、サポート プラットフォーム、カスタム アプリケーション)以外を起点とする行動データを使って、セグメント、フロー、レポート作成を強化できます。
データウェアハウス イベント インポートとは?
データウェアハウスイベントのインポートにより、Klaviyo はデータウェアハウスに直接接続し、イベントデータを含むウェアハウスのテーブルまたはビューからの インポート同期を設定できます。
ソース テーブルの各行は、Klaviyo では 1 つのイベントとして扱われます:
- 行のタイムスタンプ、メトリック名、識別子によって、何が起きたか、いつ、誰に対してが定義されます。
- 追加の列は、セグメンテーション、フロー、分析で使用できるイベントプロパティになります。
イベントのインポートは、プロファイルのインポートと同じデータウェアハウスのインポート インフラストラクチャ上に構築されていますが、プロファイルではなく、Klaviyo のイベント取り込みパイプラインを対象としています。
データウェアハウスのイベント インポートはどのように機能しますか?
Klaviyo を倉庫に接続し、イベント同期を設定した後:
- Klaviyo が構成済みのテーブルまたはビューに対して、データウェアハウスにクエリを実行します。
- 最初のインポートでは、ソース内で利用可能な履歴が読み取られます。その後の実行では、変更検出タイムスタンプを使用して保存済みの進捗から再開するため、Klaviyoがテーブル全体を再処理することはありません。
- 各行は次のとおり処理されます:
- Klaviyoは、選択した既存のAPIメトリック、または各行の指定されたメトリック名列の値のいずれかに基づいて、メトリック名(イベントタイプ)を決定します。
- イベントタイムスタンプ、プロファイル識別子、および任意の一意のIDと値は、同期設定時に構成されたフィールドマッピングに基づいて設定されます。
- 残りのすべての列は、列名をプロパティ名として使用して、イベントプロパティとして取り込まれます。アンダースコアが3つ含まれる列名(例:
parent___child1、parent___child2)は、子プロパティを持つイベントプロパティ(parent)を作成するために使用できます。
- Klaviyo は結果のイベントをアカウントに読み込みます。これらは、セグメンテーション、フロー、分析で他のカスタム API メトリックと同様に動作します。
定期的なインポート(例:毎時)をスケジュールするか、必要に応じてインポートを実行するには手動を選択できます。
始める前に
イベント インポート同期を作成する前に、次の要件が満たされていることを確認してください。
- アカウントでは、アドバンストKDPとデータウェアハウスのインポートを利用できます。
- ウェアハウスに必要なサービスアカウントの認証情報とスキーマを準備してください。Klaviyoのデータウェアハウスのインポートについてにある接続ガイドを参照してください。
- ソース テーブルまたはビューには、以下の必須列が含まれています。
- ウェアハウスで、必要なテーブル/ビューを Klaviyo のサービスユーザーに公開するための十分な権限があること。
イベントのソーステーブル構造
イベントデータを正しくインポートできるようにするには、ソーステーブルまたはビューが Klaviyo の必須フィールドと構造を満たしている必要があります。
必須フィールド
データウェアハウスのイベントインポートには、次の列が必須です:
列 | 必要ですか? | データ型 | 説明 |
|---|---|---|---|
イベントのタイムスタンプ | 必須 | タイムスタンプ/日時 | イベントが発生した日時。 |
メトリック名 | 同期設定のセットアップ中に単一のメトリックが選択されていない場合に必要です。 | 文字列 / テキスト | イベントまたはメトリック名(例: |
プロファイル識別子 | 必須(最低 1) | 文字列 / テキスト | メール、電話番号、external ID、またはKlaviyo IDのいずれか。行には複数含めることができますが、少なくとも1つはマッピングする必要があります。 |
変更検出タイムスタンプ | 必須 | タイムスタンプ | データウェアハウスで行が追加または更新された日時を記録するタイムスタンプです。イベントのタイムスタンプとは別のソース列を使用してください。この値は行とともに保存してください。表またはビューのクエリ実行時に毎回再計算しないでください。 |
オプションフィールド
これらのフィールドは、該当する場合は 推奨 されますが、必須ではありません:
列 | 必要ですか? | データ型 | 説明 |
|---|---|---|---|
ユニーク ID | おすすめ | 文字列 / 数値 | イベントの一意の識別子。プロファイルとメトリックを使用して重複排除するために使用されます。一意のIDがない場合、Klaviyoはイベントのタイムスタンプを秒単位で使用するため、同じ秒内に同じプロファイルとメトリックで発生した別々のイベントが重複として扱われる可能性があります。 |
値 | おすすめ | 数字 | イベントの数値(注文合計、使用ポイントなど)。Klaviyo のイベントモデル内の |
通貨(イベントプロパティ) | オプション | 文字列 / テキスト | 値に関連付けられた通貨コード(例:USD)。イベントプロパティとして保持するために、マッピングされていない列に含めてください。イベントのインポートには、Valueの通貨マッピングが専用で用意されていません。 |
イベントプロパティ
テーブル内のその他すべての列は、イベントプロパティとして扱われます:
- 列名は、3つのアンダースコア(___)を含まない限り、トップレベルのプロパティ名になります。3つのアンダースコア(___)を含む場合は、上記の説明のとおり、ネストされた子プロパティが作成されます。
- すべてのプロパティを明示的にマッピングする必要はありません。マッピングされていない列はイベントプロパティとして含まれます。
- ネストされた JSON は、必要に応じて個別のプロパティ値内(例:明細項目の JSON オブジェクト)に保存できますが、プロパティ名自体はトップレベルの列から取得されます。
Klaviyo はイベントプロパティに対してベストエフォート型の型解析を実行します。また、イベントのインポート設定の一部としてフィールドごとの変換ロジックは提供しません。
一般的なユースケース
顧客がデータウェアハウスのイベント インポートを使用する一般的な用途:
1) オフラインまたは POS イベントのインポート
倉庫から店頭またはオフラインのイベント(例:POS 購入、返品、予約)を取り込み、他の Klaviyo イベントやメトリックと同様に動作するようにします。
例:
In-Store Purchase注文合計、店舗所在地、支払い種別があるイベントAppointment Completedスタッフメンバー、サービスの種類、所要時間を含むイベント
2) サービスとサポートのインタラクション
チケット作成、解決、返品などの サポートおよびサービス イベント を同期して顧客タイムラインを充実させ、サービス履歴に基づくメッセージングを可能にします。
例:
Support Ticket CreatedおよびSupport Ticket ResolvedOrder Returned理由コードと返金額を含む
3) モデル化または派生イベント
warehouse-modeled behaviorsを、Klaviyo でより使いやすいイベントに変換します。
例:
High Churn Riskウェアハウス内のモデルから生成されたイベントLifecycle Milestone Reached顧客がカスタム ライフサイクル モデルでステージを移動したときのイベント
データウェアハウスのイベント インポート同期を設定
1) データウェアハウスに接続します
ウェアハウスがすでに接続されている場合は、手順2に進んでください。接続されていない場合は、以下を行ってください:
- Klaviyoで、[アドバンストKDP] > [データ管理] > [同期]と進みます。
- すでに同期が設定されている場合は、同期を作成をクリックしてください。データウェアハウスからデータをインポートを選択し、次にウェアハウスコネクタを選択してください。
- Klaviyoでのデータウェアハウスのインポートについてからリンクされている該当の接続ガイドで、ウェアハウスの準備手順を完了してください。
- 接続先をクリックし、続いてウェアハウス名をクリックしてください。必要な接続情報を入力し、次へをクリックしてください。
- テストをクリックしてください。接続が成功し、Klaviyoが少なくとも1つのテーブルまたはビューにアクセスできるようになったら、次へをクリックしてください。
複数のデータウェアハウスのインポート接続を作成し、各接続にソーステーブルまたはビューを追加できます。
同期を作成する前に、どの過去のイベントを含めるかを決めてください。以下の 2 つの方法があります。
- イベントのインポート先として、関連するすべての履歴イベントがすでに含まれているテーブルまたはビューを指定するか、
- 最初は履歴専用テーブルから開始し、その後、継続的な更新のために変更データキャプチャ(CDC)に基づくビューに切り替えます。同じマッピング済みの列を維持し、新しい行には同期で保存された進捗より後の変更検出タイムスタンプを付与してください。
2)新しいイベント インポート同期を作成する
新しい接続の場合は、上で開いた設定で続行してください。既存の接続の場合は、まず次を実行してください。
- [アドバンストKDP] > [データ管理] > [同期]と進み、データウェアハウスの接続を選択します。
- ソースを追加をクリックします。
同期設定で:
- 同期の名前を入力し、必要に応じて説明も入力してください。
- データソースで、インポートするイベントが含まれるテーブルまたはビューを選択してください。
- [データオブジェクトタイプ] で [イベント] を選択します。
3)同期の頻度を選択
- 頻度で、同期の実行方法を選択してください:
- 実行スケジュール:毎回の下で間隔を選択し、開始日、開始時刻、タイムゾーンを設定してください。デフォルトの間隔は1時間です。
- 手動:定期スケジュールなしで同期を保存し、必要に応じて実行します。
- フィールドをマッピングするには次へをクリックします。
4)必須フィールドをマッピング
次に、ウェアハウス テーブルの列を、Klaviyo で必須のイベント フィールドにマッピングします。
次のマッピングを完了してください:
- 変更検出で、新しい行の検出の変更検出タイムスタンプ列を選択します。イベントタイムスタンプとは別のソース列を使用します。
- イベントタイプで、次のオプションから1つを選択してください:
- 同じイベントタイプ:すべての行に対して既存のAPIメトリックを選択してください。
- 各行の特定のイベントタイプ:各行のメトリック名が含まれる列を選択してください。必要なメトリックが既存のAPIメトリックリストにない場合は、このオプションを使用してください。
- イベントのタイムスタンプで、イベントが発生した日時が記録されている列を選択します。
- プロファイルプロパティでマッピングを追加をクリックし、少なくとも1つのプロファイル識別子(例:メール、電話番号、外部ID、またはKlaviyo ID)をマッピングします。
推奨フィールドをマッピングすることもできます:
- ユニーク ID
- 値
通貨メタデータ(例:USD)を保持するには、その列をマッピングしないままにして、イベントプロパティにします。専用の値の通貨マッピングはありません。
明示的にこれらのコア フィールドにマッピングしない残りの列は、自動的に イベントプロパティになります。
設定 UI では、複数の列を同じトップレベル フィールドにマッピングできないようにし、保存を許可する前に必須フィールドがすべて存在することを検証します。
5)保存して同期を確認します
- 設定を確認してから、イベントインポートの同期を保存するために完了をクリックしてください。
- 倉庫接続ページで、同期名をクリックしてください。設定によって同期中の概要に戻った場合は、最初に倉庫接続を選択してください。
- 手動を選択した場合は、同期を実行をクリックしてインポートを開始してください。スケジュールされたインポートは、選択した頻度に従って実行されます。
- 進行状況は実行履歴で確認し、エラーはログで確認してください。
インポートされたイベントが Klaviyo でどのように動作するか
インポート後:
- 各行は、Klaviyo の カスタム API メトリックのイベントとして表示されます。
- マッピングした(または定数として設定した)メトリック名によって、プロダクトに表示されるイベントタイプ名(例:
Placed Order)が決まります。 - すべてのプロファイル識別子は、可能な限り既存のプロファイルに解決されます。それ以外の場合、Klaviyo は、他のイベント取り込み経路と同様に、提供された識別子フィールドを使用して新しいプロファイルを作成します。
これらのイベントは次の用途に使用できます:
- ユーザーのアクションに基づいてセグメントを作成し、イベント プロパティでフィルタリングします。
- フローをトリガーし、フィルターします。
- 他のソースからのイベントと並行して、メトリックとレポート作成で行動を分析します。
制限事項とベストプラクティス
データウェアハウスのイベント インポートを使用する際は、次の点に注意してください:
- イベントデータにはイベントのインポートを使用してください。プロファイルプロパティを更新するには、プロファイルのインポートまたはその他のサポートされている方法を使用してください。
- 変更検出タイムスタンプはイベント タイムスタンプと異なる必要があります。両方に同じ列を使用すると、初回同期後に過去のイベントを安全にインポートできなくなる可能性があります。
- 履歴バックフィルの場合は、各行がウェアハウスに読み込まれた時刻を、変更検出用タイムスタンプとして使用してください。履歴テーブルを作成するジョブでは、範囲を狭く保つために、そのジョブのタイムスタンプを行に保存できます。ビューがクエリされるたびにこのタイムスタンプを再計算しないでください。あわせて、以下の行数に関するガイダンスに従ってください。
- 可能であれば、重複排除を改善し、デバッグを容易にするために、イベントごとに安定した一意のIDを使用してください。同じプロファイルとメトリックに対して同じIDを再インポートすると重複として扱われ、イベントのプロパティは更新されません。
- 同じテーブル内に複数のイベントタイプ(メトリック)を保持できます。マッピングされていない列はイベントプロパティとして含まれるため、メトリックごとに異なるプロパティセットが必要な場合は、別々のビューを使用してください。
- 複雑なネストされたオブジェクト(例:明細行配列)については、可能な場合は複数の列にフラット化することを推奨します。特に、セグメンテーションやフローで使用する予定のプロパティについては推奨します。
- 履歴変更検出のタイムスタンプを狭い範囲に維持してください。初回のバックフィル中、Klaviyoは最も古い変更検出タイムスタンプを起点として、1時間単位のウィンドウでデータを読み取ります。ほかがすべて最近のデータである場合でも、2023年の単一レコードがあると、Klaviyoがその間のウィンドウを順に進める必要があるため、バックフィルが遅くなることがあります。以降の実行では、最も古いレコードから再度開始するのではなく、保存された進捗から再開します。
- 1 時間の変更検出タイムスタンプウィンドウ内で、単一の行数が約 100,000 行を超えないようにしてください。同じ 1 時間ウィンドウを共有する行が多すぎると、同期クエリがタイムアウトする可能性があります。
Snowflakeクエリのパフォーマンスを向上させる
推奨される Snowflake クラスタリング キーの設定
大規模なSnowflakeテーブルの場合、変更検知タイムスタンプに対するクラスタリングキーによって、クエリが不要なマイクロパーティションをスキップしやすくなります。キーを追加する前に代表的なクエリをテストし、クエリ削減による効果と、クラスタリングを維持するために使用されるSnowflakeクレジットのバランスを評価してください:
ALTER TABLE your_schema.your_table CLUSTER BY (your_change_timestamp_column);