Skip to main content

概要

MoEngage では、Databricks データベースのテーブルを通じてユーザーとイベントをインポートできます。

インポートの種類

MoEngage は、Databricks データウェアハウスからの次の種類のインポートをサポートしています。
  • Registered Users: MoEngage にすでに登録されているユーザー。
  • Anonymous Users: MoEngage にまだ登録されていないユーザー。
  • Events (標準およびユーザー定義): MoEngage は、キャンペーンインタラクションイベントなどの標準イベントと、ユーザー定義のイベントをインポートできます。

データの準備

MoEngage のインポートでは特定のテーブルスキーマは必要ありません。テーブル内のすべての列は、MoEngage ダッシュボードで個別にスキップまたはマッピングできます。ただし、インポートを設定する前に考慮すべき点がいくつかあります。
MoEngage で定期的なユーザーインポートを設定すると、MoEngage は updated_at タイムスタンプ列を参照して、前回の同期以降に変更されたデータを同期します。この列には、データの変更時刻を正確に反映していれば任意の名前を付けることができます。テーブルでこの列に別の名前を付けている場合は、MoEngage ダッシュボードでこのマッピングを個別に設定できます。
MoEngage の標準イベントをインポートするには、テーブル内のイベント名が MoEngage の標準イベント名と一致していることを確認してください。

必要なアクセス権限

MoEngage がデータを取得できるように、MoEngage にはデータベースへの READ アクセス権が必要です。既存のデータベースユーザーに次の権限を付与するか、MoEngage 専用の新しいデータベースユーザーを作成してください。

クエリ 1 (必須)

GRANT SELECT ON SCHEMA \catalog_name`.`schema_name` TO `[email protected]`;` 上記のクエリは、カタログ catalog_name のスキーマ schema_name 内のすべてのテーブルに対する SELECT 権限を、メールアドレス [email protected] のユーザーに付与します。 SELECT 権限を付与すると、MoEngage はスキーマ内で次の操作を実行できるようになります。
  • スキーマ内のすべてのテーブルからデータを読み取る。
  • 任意のテーブルに対して SELECT クエリを実行する。
  • 基になるデータを変更する権限なしで、テーブルの内容を表示する。

クエリ 2 (必須)

GRANT USE SCHEMA ON SCHEMA \catalog_name`.`schema_name` TO `[email protected]`;` 上記のクエリは、カタログ catalog_name のスキーマ schema_name 内のすべてのテーブルに対する USE SCHEMA 権限を、メールアドレス [email protected] のユーザーに付与します。 USE SCHEMA 権限により、ユーザーは次のことができるようになります。
  • スキーマのメタデータにアクセスして表示する。
  • スキーマをアクティブな作業コンテキストとして設定する (例: USE SCHEMA を使用)。
  • スキーマ一覧でスキーマを表示する。
  • 完全修飾オブジェクト名を参照する際にスキーマ名を使用する。
クエリ 1 とクエリ 2 の両方を使用すると、権限は次のように機能します。
  • USE SCHEMA: 指定したスキーマにアクセスして参照するために必要な権限です。
  • SELECT: そのスキーマ内のテーブルからデータを読み取ることを許可する権限です。
  • USE SCHEMA 権限がない場合、スキーマ内のテーブルに対する SELECT 権限を持っていても、ユーザーはスキーマにアクセスできません。クエリ 2 は、スキーマへのアクセスを有効にするために USE SCHEMA 権限を明示的に付与します。
提供されているすべてのクエリで、次のプレースホルダーの値を実際の詳細に置き換えてください。
  • <catalog_name>: カタログの名前。
  • <schema_name>: データベース/スキーマの名前。
  • <[email protected]>: トークンを作成したユーザーのメール ID。

日付型属性のインポート

日付型属性のインポートには追加の手順が必要です。詳細については、こちらを参照してください。

Databricks からのインポートの設定

前提条件
  • MoEngage App Marketplace で、適切な権限を持つ Databricks 接続がセットアップされていることを確認してください。
  • セキュリティポリシーで IP のホワイトリスト登録が必要な場合は、こちらを参照してください。
  • アカウントで Object データ型のサポートを有効にする必要があります (任意)。
Databricks インポートを設定するには、次の手順を実行します。
  1. MoEngage のサイドバーメニューで、Data メニュー項目 Data メニュー項目 にカーソルを合わせます。Data メニューが表示されます。
  2. Data imports をクリックします。 Data Imports
  3. Data imports ページで、Data warehouses タブをクリックします。
  4. 右上の + Import をクリックし、Users または Events を選択して新しいインポートを作成します。
    インポートタイプの選択
  5. Databricks タイルをクリックします。
  6. Continue をクリックします。
    Continue ボタン

ステップ 1: Databricks 接続とテーブルソースを選択する

インポート名

インポート名フィールド Imports Dashboard で簡単に識別できるように、このインポートの名前を入力します。選択したインポートの種類に応じて、次の手順が異なる場合があります。
登録済みユーザーと匿名ユーザーのどちらをインポートするかを選択できます。両方を一緒にインポートすることもできます。
ユーザーインポートタイプの選択

インポートソース

最初のステップである Source and format では、使用する Databricks 接続とインポート元のテーブルを MoEngage に指定する必要があります。開始するには、次の手順を実行します。
  1. Databricks connection リストで、このインポートに使用する接続を選択します。Databricks 接続をまだ作成していない場合は、Databricks connection リストの末尾にある + Add connection をクリックすると、App Marketplace にリダイレクトされて設定できます。Databricks ウェアハウスを MoEngage に接続する方法の詳細については、こちらを参照してください。
  2. Databricks 接続を選択すると、Schema/Dataset リストと Table/View リストが表示されます。
  3. Schema/Dataset で、スキーマ/データセットを選択します。注: スキーマが正しく読み込まれない場合は、前提条件に記載されている必要な権限が MoEngage に付与されていることを確認してください。
  4. Table/View リストで、データのインポート元となるテーブル/ビューを選択します。 Table/View の選択

イベントインポート

上記の手順に加えて、MoEngage は複数のイベントを含むテーブルに対する追加サポートを提供しています。テーブルに複数のイベントが含まれている場合は、まずテーブルを Preview してから、Table contains multiple events チェックボックスをオンにする必要があります。 Table contains multiple events チェックボックス MoEngage は、Event name 列の値を使用してインポートする行を絞り込みます。選択したイベント名に一致する行のみがインポートされます。テーブル内の既存の列をイベント名列として指定できます。この列を選択してデータを再度プレビューすると、インポートを続行する前に確認できるよう、絞り込まれた行が表示されます。 絞り込まれた行のプレビュー テーブルをプレビューした後、2 番目のステップである Import configuration and action に進みます。

ステップ 2: 列を MoEngage 属性にマッピングする

このステップでは、テーブルの列を MoEngage に存在する属性にマッピングする必要があります。すべての列が縦に並べて表示されます。 列マッピングの概要
  1. Column name: マッピングする列名を示します。列名の下には、参考として、MoEngage がサンプル値 (前のステップで取得したテーブルの最初の行から抽出) を表示します。
  2. Map attribute: テーブルの列をマッピングする MoEngage 属性を指定します。新しい属性を作成することもできます。一部の属性は複数のデータ型からの取り込みをサポートしているため、列のデータ型も選択する必要があります。datetime 列の場合は、フォーマットを選択する必要があります。詳細については、こちらを参照してください。
  3. Action: 必要に応じて、列をスキップすることを選択できます。スキップした列はインポートされません。
インポートの種類に応じて、いくつかの必須マッピングがあります。
必須マッピングを指定すると、マッピングテーブルの列名に反映され、その列をスキップ可能としてマークできなくなります。 新しいイベントと同様に、新しいユーザー属性も作成できます。作成するには、次の手順を実行します。
  1. Select attribute リストにある + Create attribute をクリックします。Create new attribute ダイアログボックスが表示されます。 Create New Attribute ダイアログ
  2. Attribute name ボックスに、属性の名前を入力します。
  3. Data type リストで、データ型を選択します。この属性や既存の属性は、Data Management ページから編集できます。
    新しく作成したユーザー属性は、初回のインポートが成功するまで Data Management ページに表示されません。

マニフェストファイル

必要に応じて、マニフェストファイルをアップロードして、これらの列を自動マッピングすることもできます。マニフェストファイルをアップロードするには、次の手順を実行します。
  1. マッピングテーブルの右上にある Upload mapping ファイルをクリックします。
    Upload mapping ファイルボタン
  2. Upload mapping ダイアログボックスで、マニフェストファイルをアップロードします。 Upload mapping ダイアログ
  3. Done をクリックします。
それに応じてマッピングが自動的に設定されます。MoEngage 以外の属性を持つ列は空白のままになるため、列を手動でマッピングするか、新しい属性を作成できます。マニフェストファイルが想定される規則に従っていることを確認してください。 マニフェストファイル内の列のうち、テーブルに存在しないものは無視されます。また、既存のテーブル列のマッピングがマニフェストファイルに存在しない場合、MoEngage はそのマッピングを空白のままにするため、手動で設定できます。
マニフェストファイル内の列が存在しない MoEngage 属性にマッピングされている場合、マッピングは空白になります。UI から新しい属性を手動で作成してからマッピングする必要があります。

Object データ型のサポート

Object データ型は Databricks でもサポートされています。

互換性のある JSON データを Databricks に保存する

Databricks 内に JSON データを保存するには、列のデータ型を VARIANT 型に変更する必要があります。詳細については、こちらを参照してください。Databricks 内に保存する JSON は有効な JSON である必要があります。そうでない場合、値は JSON として書き込まれません。JSON 列の例を次に示します。

Databricks 経由で JSON データをインポートする

MoEngage プラットフォームで Object 型として指定されている既存の属性を Databricks の列に関連付けることで、JSON データをインポートできます。 Databricks コード Map attribute 列の Select attribute リストで Create new attribute をクリックして、新しい Object 属性を作成することもできます。 Databricks の属性マッピング
MoEngage は、ネストされた属性とのマッピングをサポートしていません。マッピングできるのはトップレベルの属性のみです。

ユーザーをセグメントとして保存する

ユーザーをインポートする際に、MoEngage のカスタムセグメントに含めることができます。インポートされたユーザーは同期のたびにこのセグメントに継続的に追加され、ユーザーが削除されることはありません。インポートしたユーザーをカスタムセグメントとして保存するには、次の手順を実行します。
  1. Save as a custom segment トグルをオンにして、インポートしたユーザーをカスタムセグメントに保存し、そのセグメントにカスタマイズしたキャンペーンを送信します。 Save as custom segment トグル
  2. Segment name ボックスに、セグメントの名前を入力します。
  3. Column having user ID リストで、テーブル内の識別子列を選択します。

インポートの動作

ユーザーインポートの場合、既存ユーザーのみを更新するように選択することもできます。これは、新しいユーザーを作成せずに MoEngage でユーザーの属性を一括更新したい場合に便利です。これを有効にするには、Import Behaviour の下にある Update existing users only チェックボックスをオンにします。 Update existing users only チェックボックス

インポート通知の送信

インポートのステータスをメールで通知するように選択できます。設定するには、次の手順を実行します。
  1. Send import status to チェックボックスをオンにします。
  2. Select email id リストで、メール ID を選択します。ステータスメールの送信先として最大 10 件のメールアドレスを選択できます。 インポートステータス
インポートステータスのメールには、次のイベントに関する情報が含まれます。
  • インポートが作成された
  • インポートが成功した
  • インポートが失敗した
すべてのマッピングが完了したら、Next をクリックします。

ステップ 3: インポート頻度を選択する

インポート頻度のオプション このステップでは、テーブルと同期するタイミングを定義する必要があります。次の種類のインポートがサポートされています。
  • One-Time: インポートをできるだけ早く実行するか、後の日時に (スケジュールして) 実行できます。インポート条件に一致する既存のすべての行がインポートされます。
  • Periodic: インポートを毎時、毎日、毎週、毎月、または間隔や詳細設定を指定して実行できます。
必要に応じて、指定した回数の実行後、または特定の日付にインポートを終了するかどうかを指定できます。準備ができたら Done をクリックします。
初回のインポートでは、テーブル内の一致するすべての行がインポートされます。以降のインポートでは、変更された行のみが含まれます。

重複インポート

次の場合、インポートは重複と見なされます。
  • Users/Events のインポートタイプが同じである。
  • Event name/Registered/Anonymous/All users のインポートサブタイプが同じである。
  • Event name/Registered/Anonymous/All users のインポートタイプで、Databricks 接続が同じである。
  • Event name/Registered/Anonymous/All users のインポートタイプで、Schema/Dataset と Table/View が同じである。

インポート失敗ポリシー

接続障害が発生した場合、定期的な Databricks インポートは最大 10 回再試行されます。すべての再試行が失敗すると、インポートは FAILED としてマークされます。次の表は、接続の問題 (認証情報、ネットワーク、ウェアハウスが利用できないなど) により定期的な Databricks インポートが失敗した場合の動作と必要な対応をまとめたものです。

失敗したインポートを再開する

FAILED になったインポートには、手動での対応が必要です。
  1. Databricks 側で根本的な問題を調査して解決する必要があります (例: 認証情報の更新、権限の確認、ウェアハウスの可用性の確保)。
  2. 問題を解決した後、MoEngage UI からインポートを手動で複製して再開する必要があります。
  • 新しい定期インポートの初回の正常な実行は、常に履歴インポートになります (設定したテーブル/ビューからすべてのデータを取得します)。
  • 失敗したインポートを複製すると、新しい履歴インポートが開始されます。元のインポートが以前に成功していた場合、この複製によってデータが重複する可能性があります。データフローを効果的に制御するために、MoEngage ではビューの使用を推奨しています。

FAQ

回答: はい、MoEngage の Databricks インポートは Databricks Unity Catalog を基盤として構築されています。そのため、セットアッププロセスは標準の Databricks 接続と同じです。
回答: いいえ、互換性に関する特定のバージョン要件はありません。
回答: Databricks では、テーブル作成時に列の型を VARIANT にする必要があります。
回答: Databricks にはローカル時刻の概念がないため、MoEngage は保存されている時刻を UTC として解釈します。Databricks では、タイムスタンプを UTC で保存することを推奨しています。