メインコンテンツへスキップ
OneSignal Databricks統合

OneSignal Databricks統合概要


概要

OneSignal + Databricks統合は双方向データ同期をサポートしています:
  • 分析、ダッシュボード、およびレポート用にOneSignalメッセージイベントをDatabricksにエクスポートします。
  • JourneysとパーソナライズされたキャンペーンをトリガーするためにDatabricksからOneSignalにカスタムイベントをインポートします。
この統合を使用して、プラットフォーム全体でエンゲージメントと行動データを統合し、データに基づいたメッセージング戦略を推進します。

OneSignalイベントをDatabricksにエクスポート

ほぼリアルタイムの分析と可視性のために、OneSignalからプッシュ、メール、アプリ内、およびSMSイベントをDatabricksレイクハウスに同期します。 要件
  • Professionalプラン
  • カスタムイベントが有効(イベントインポート用)
  • Databricksプラットフォーム:AWS、Azure、またはGCP
  • Databricksプラン:Premium以上
  • Databricks Unity Catalog(ガバナンスに推奨)
  • クエリ用のDatabricks SQL Warehouse
  • Delta Lakeイベントテーブル(カスタムイベントインポート用)
セットアップ手順

1. SQL Warehouseの詳細を収集

1

Databricksワークスペースにログイン

DatabricksワークスペースのSQL Warehousesに移動します。
2

Warehouseを選択

Warehouseを選択し、Connection detailsタブを開きます。
3

次の詳細を保存

  • Server Hostname
  • Port
  • HTTP Path
Fivetranセットアップ用のDatabricks SQL接続詳細

Fivetranセットアップ用のDatabricks SQL接続詳細

2. サービスプリンシパルの作成

1

Service Principalsページに移動

Workspace Settings > Identity and Access > Service Principalsに移動します。
2

新しいサービスプリンシパルを追加

Add Service Principalをクリックし、次にAdd Newをクリックします。
3

サービスプリンシパルに名前を付ける

名前を付けます(例:onesignal-sync)。
サービスプリンシパルを追加するためのモーダル。「Add new」オプションがハイライトされています

サービスプリンシパルを追加するためのモーダル。「Add new」オプションがハイライトされています

3. シークレットの生成

1

作成されたプリンシパルをクリック

2

Secretsタブに移動

3

シークレットを生成

Generate Secretをクリックして安全に保存します。
シークレットは一度だけ表示されます。安全に保管してください。
API認証用のOAuthシークレットとクライアントIDを表示するDatabricks「Generate secret」モーダル

API認証用のOAuthシークレットとクライアントIDを表示するDatabricks「Generate secret」モーダル

4. 権限の割り当て

1

Catalogに移動してPermissionsタブを開く

2

Grantをクリック

3

サービスプリンシパルに次の権限を割り当てる

  • USE CATALOG
  • USE SCHEMA
  • SELECT
  • MODIFY
  • CREATE SCHEMA
  • CREATE TABLE
カスタムカタログ権限が選択されたDatabricksプリンシパルの権限割り当て画面

カスタムカタログ権限が選択されたDatabricksプリンシパルの権限割り当て画面

5. OneSignalを接続

1

統合をアクティブ化

OneSignalで、Data > Integrations > Databricksに移動します。
2

詳細を入力

  • Server Hostname
  • Port
  • HTTP Path
  • Catalog Name
  • Schema Name
  • Service Principal認証情報(ID + Secret)
カタログ、ホスト名、HTTPパス、およびOAuth認証情報のフィールドを持つOneSignal Databricks構成フォーム

カタログ、ホスト名、HTTPパス、およびOAuth認証情報のフィールドを持つOneSignal Databricks構成フォーム

3

統合を構成

  • Sync Frequency: 15分ごとの頻度
  • Dataset/Table Names: onesignal_events_<app-id>およびmessage_eventsとして事前設定(編集可能)
  • Event Types: 同期するイベントを選択 - すべてまたは必要なものだけを選択
4

イベントを選択

Databricksカタログで受信したいイベントを選択します。
同期ステータス、データセット構成、および選択されたメッセージイベントタイプを表示するOneSignalイベントエクスポート設定画面

同期ステータス、データセット構成、および選択されたメッセージイベントタイプを表示するOneSignalイベントエクスポート設定画面

5

セットアップを完了

Saveをクリックして、成功確認を待ちます
初期データ同期がBigQueryに表示されるまでに15〜30分かかる場合があります。待っている間、プッシュ、メール、アプリ内、またはSMSを介してメッセージを送信して、選択したイベントをトリガーします。

6. Databricksでデータを表示

  1. DatabricksでCatalogを開きます。
  2. 同期が完了すると、構成されたスキーマが表示されます。
  3. message_eventsテーブルにアクセスしてクエリします。
    プロダクションスキーマの下にOneSignalメッセージイベントテーブルを表示するDatabricks Catalogビュー

    プロダクションスキーマの下にOneSignalメッセージイベントテーブルを表示するDatabricks Catalogビュー

  4. テーブルをクリックしてサンプルデータのプレビューを表示します。
    同期されたOneSignalイベントフィールドを持つmessage_events_1テーブルのサンプルデータ

    同期されたOneSignalイベントフィールドを持つmessage_events_1テーブルのサンプルデータ

スキーマの欠落、権限エラー、または不正な形式のイベントなどの問題が発生した場合は、support@onesignal.comにお問い合わせください。

メッセージイベントとプロパティ

メッセージイベントの種類

プロパティ: event_kind タイプ: String メッセージとイベントの種類(例:message.push.receivedmessage.push.sent)。
メッセージイベント(OneSignal)event_kind説明
Push Sentmessage.push.sentプッシュ通知が正常に送信されました。
Push Receivedmessage.push.received配信されたプッシュ(Confirmed Deliveryを参照)。
Push Clickedmessage.push.clickedユーザーがプッシュをクリックしました。
Push Failedmessage.push.failed配信失敗。メッセージレポートを参照してください。
Push Unsubscribedmessage.push.unsubscribedユーザーがプッシュからサブスクライブ解除しました。
In-App Impressionmessage.iam.displayedアプリ内メッセージが表示されました。
In-App Clickedmessage.iam.clickedアプリ内メッセージがクリックされました。
In-App Page Viewedmessage.iam.pagedisplayedアプリ内ページが表示されました。
Email Sentmessage.email.sentメールが配信されました。
Email Receivedmessage.email.received受信者のメールサーバーでメールが受け入れられました。
Email Openedmessage.email.openedメールが開かれました。Email Reportsを参照してください。
Email Link Clickedmessage.email.clickedメール内のリンクがクリックされました。
Email Unsubscribedmessage.email.unsubscribed受信者がサブスクライブ解除しました。
Email Marked Spammessage.email.resporedasspamスパムとしてマークされました。Email Deliverabilityを参照してください。
Email Bouncedmessage.email.hardbounced永続的な配信失敗によるバウンス。
Email Failedmessage.email.failed配信が失敗しました。
Email Suppressedmessage.email.supressed抑制リストにより抑制されました。
SMS Sentmessage.sms.sentSMSが送信されました。
SMS Deliveredmessage.sms.deliveredSMSが正常に配信されました。
SMS Failedmessage.sms.failedSMSの配信に失敗しました。
SMS Undeliveredmessage.sms.undeliveredSMSが拒否されたか到達不可能です。

イベントデータスキーマ

ユーザーが生成する各メッセージイベントには、以下のメタデータがレコードに添付されます。
列名タイプ説明
event_idUUIDイベントの一意の識別子
event_timestampTimestampイベント発生時刻
event_kindStringイベントの種類
subscription_device_typeStringデバイスタイプ(例:iOS、Android、Web、Email、SMS)
languageStringサブスクリプションの言語コード
versionString統合バージョン
device_osStringデバイスのオペレーティングシステムバージョン
device_typeNumber数値デバイスタイプ
tokenStringプッシュトークン、電話番号、またはメール
subscription_idUUIDSubscription ID
subscribedBooleanサブスクリプションステータス
onesignal_idUUIDOneSignalユーザーID
last_activeString最終アクティブタイムスタンプ
sdkStringOneSignal SDKバージョン
external_idString統合ユーザーIDと一致する必要がある外部ユーザーID
app_idUUIDOneSignalからのApp ID
template_idUUIDTemplate ID(該当する場合)
message_idUUIDメッセージバッチ/リクエストID
message_nameStringメッセージの名前
message_titleStringメッセージタイトル(英語のみ)
message_contentsString切り捨てられたメッセージ本文(英語のみ)
_created, _id, _index, _fivetran_synced内部使用Fivetran同期メタデータ

注意事項

  • 保存/アクティブ化後の同期は、完了までにさらに15〜30分かかる場合があります。
  • 非アクティブ化しても、非アクティブ化後に最終同期が1回行われる場合があります。
  • 効率的なデータ同期を確保するために、システムは自動的にステージングデータセットを作成および管理します。これらのデータセットは、fivetran_{2つのランダムな単語}_stagingのようなパターンで命名され、メインスキーマに統合される前の処理中にデータを一時的に保存します。これらのステージングデータセットは、合理化されたワークフローを維持するために不可欠であり、削除しないでください。自動的に再作成されます。

Databricksからイベントをインポート

Databricksから行動イベントデータをOneSignalに送信して:
  • ユーザーアクティビティに基づいてJourneysをトリガー
  • 行動データに基づいてメッセージングをパーソナライズ
要件
  • アウトバウンドメッセージイベント用のEvent Streamsへのアクセス(プランの制限と超過料金が適用されます)
  • インバウンドイベント同期用のCustom Eventsへのアクセス(プランの制限と超過料金が適用されます)
  • 更新されたアカウントプラン(無料アプリでは利用できません)
  • SQL Warehouseまたはコンピュートクラスターを持つDatabricksワークスペース
  • 適切な権限を持つPersonal Access Token
  • Delta Lake形式で行動データを含むイベントデータテーブル
  • Unity Catalog(データガバナンスに推奨)
セットアップ手順
1

Databricks Personal Access Tokenを作成

OneSignalがDatabricksワークスペースにアクセスするためのPersonal Access Tokenを生成します:
  1. DatabricksワークスペースのUser Settingsに移動します
  2. Developerタブをクリックし、次にAccess tokensをクリックします
  3. Generate new tokenをクリックします
  4. 「OneSignal Integration」のようなコメントを入力し、有効期限を設定します(90日を推奨)
  5. 生成されたトークンを保存します(OneSignalに必要です)
2

SQL Warehouseアクセスを構成

OneSignalがSQL Warehouse経由でイベントデータをクエリできることを確認します:
  1. DatabricksワークスペースのSQL Warehousesに移動します
  2. OneSignalアクセス用のSQL Warehouseを選択または作成します
  3. 接続詳細からServer HostnameHTTP Pathをメモします
  4. Warehouseがイベントデータテーブルにアクセスできることを確認します
3

テーブル権限を付与

イベントデータを含むテーブルへのOneSignal読み取りアクセスを付与します:
-- Unity Catalogが有効なワークスペースの場合
GRANT SELECT ON TABLE catalog.schema.event_table TO `onesignal@yourdomain.com`;

-- Hive metastoreテーブルの場合
GRANT SELECT ON TABLE database.event_table TO `onesignal@yourdomain.com`;
4

OneSignalに統合を追加

OneSignalで、Data > Integrationsに移動し、Add Integrationをクリックします。Databricksを選択して次を提供します:
  • Server Hostname:Databricks SQL Warehouseホスト名
  • HTTP Path:SQL Warehouse HTTPパス
  • Personal Access Token:ステップ1で作成したトークン
  • Catalog(オプション):Unity Catalogを使用している場合はUnity Catalog名
5

イベントデータソースを構成

イベントデータを含むDatabricksテーブルを指定します:
  • Database/Schema:イベントテーブルを含むデータベースまたはスキーマ名
  • Table:イベントレコードを含むテーブル名(例:user_events
  • Event Query:イベントデータをフィルタリングまたは変換するオプションのSQLクエリ
イベントテーブルには次の列が含まれている必要があります:
  • イベント名/タイプ(String)
  • ユーザー識別子(String)
  • イベントタイムスタンプ(Timestamp)
  • 追加のイベントプロパティ
6

接続をテスト

Test Connectionをクリックして、OneSignalがDatabricksワークスペースにアクセスしてイベントデータを読み取れることを確認します。

イベントデータマッピング

をOneSignalのカスタムイベント形式にマッピングします:
OneSignalフィールド説明必須
nameevent_nameイベント識別子はい
external_iduser_idユーザー識別子はい
timestampevent_timestampイベントが発生した時刻いいえ
propertiesevent_dataいいえ

高度な構成

Unity Catalog統合

ガバナンスされたデータアクセスのためにUnity Catalogを活用します:
SELECT
  event_name,
  user_id,
  event_timestamp,
  to_json(
    named_struct(
      'product_id', product_id,
      'purchase_amount', purchase_amount,
      'category', category
    )
  ) as payload
FROM catalog.schema.user_events
WHERE event_timestamp >= current_timestamp() - INTERVAL 7 DAYS

Delta Lakeの最適化

より良いクエリパフォーマンスのためにイベントテーブルを最適化します:
  • パーティショニング:より高速な時間ベースのクエリのために日付(event_date)でパーティション分割
  • Z-Ordering:より良いフィルタリングのためにuser_idevent_nameでZ-order
  • Delta Lake機能:自動最適化のためにliquid clusteringを使用

ストリーミングイベント処理

リアルタイムイベント処理については、次を検討してください:
  • Structured Streaming:イベントが到着したときに処理
  • Delta Live Tables:堅牢なイベント処理パイプラインを構築
  • Auto Loader:新しいイベントファイルを継続的に取り込む
SQL Warehouseが、他のワークロードに影響を与えることなくOneSignalのクエリを処理するのに十分なコンピュートリソースを持っていることを確認してください。

FAQ

同じコンテンツで異なるメッセージIDが表示されるのはなぜですか?

これは、同じメッセージが複数回送信された場合に発生します。おそらくトランザクションフローまたは複数の送信で再利用されるメッセージテンプレート経由です。

OneSignalはDatabricksからイベントをどのくらいの頻度で同期しますか?

OneSignalは、最小間隔15分で構成されたスケジュールに基づいてイベントデータを同期します。

イベント処理にDatabricksノートブックを使用できますか?

はい、ノートブックを使用してイベントデータを処理および準備し、OneSignalがクエリできるテーブル経由で公開できます。

イベントクエリのコスト最適化はどうですか?

クエリ負荷に基づいて自動的にスケーリングする費用対効果の高いオンデマンドコンピュート用のサーバーレスSQL Warehouseの使用を検討してください。