
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の詳細を収集
Databricksワークスペースにログイン
Warehouseを選択
次の詳細を保存
- Server Hostname
- Port
- HTTP Path

Fivetranセットアップ用のDatabricks SQL接続詳細
2. サービスプリンシパルの作成
Service Principalsページに移動
新しいサービスプリンシパルを追加
サービスプリンシパルに名前を付ける
onesignal-sync)。
サービスプリンシパルを追加するためのモーダル。「Add new」オプションがハイライトされています
3. シークレットの生成
作成されたプリンシパルをクリック
Secretsタブに移動
シークレットを生成

API認証用のOAuthシークレットとクライアントIDを表示するDatabricks「Generate secret」モーダル
4. 権限の割り当て
Catalogに移動してPermissionsタブを開く
Grantをクリック
サービスプリンシパルに次の権限を割り当てる
- USE CATALOG
- USE SCHEMA
- SELECT
- MODIFY
- CREATE SCHEMA
- CREATE TABLE

カスタムカタログ権限が選択されたDatabricksプリンシパルの権限割り当て画面
5. OneSignalを接続
統合をアクティブ化
詳細を入力
- Server Hostname
- Port
- HTTP Path
- Catalog Name
- Schema Name
- Service Principal認証情報(ID + Secret)

カタログ、ホスト名、HTTPパス、およびOAuth認証情報のフィールドを持つOneSignal Databricks構成フォーム
統合を構成
- Sync Frequency: 15分ごとの頻度
- Dataset/Table Names:
onesignal_events_<app-id>およびmessage_eventsとして事前設定(編集可能) - Event Types: 同期するイベントを選択 - すべてまたは必要なものだけを選択
イベントを選択

同期ステータス、データセット構成、および選択されたメッセージイベントタイプを表示するOneSignalイベントエクスポート設定画面
セットアップを完了
6. Databricksでデータを表示
- DatabricksでCatalogを開きます。
- 同期が完了すると、構成されたスキーマが表示されます。
-
message_eventsテーブルにアクセスしてクエリします。
プロダクションスキーマの下にOneSignalメッセージイベントテーブルを表示するDatabricks Catalogビュー
-
テーブルをクリックしてサンプルデータのプレビューを表示します。

同期されたOneSignalイベントフィールドを持つmessage_events_1テーブルのサンプルデータ
support@onesignal.comにお問い合わせください。メッセージイベントとプロパティ
メッセージイベントの種類
プロパティ:event_kind
タイプ: String
メッセージとイベントの種類(例:message.push.received、message.push.sent)。
| メッセージイベント(OneSignal) | event_kind | 説明 |
|---|---|---|
| Push Sent | message.push.sent | プッシュ通知が正常に送信されました。 |
| Push Received | message.push.received | 配信されたプッシュ(Confirmed Deliveryを参照)。 |
| Push Clicked | message.push.clicked | ユーザーがプッシュをクリックしました。 |
| Push Failed | message.push.failed | 配信失敗。メッセージレポートを参照してください。 |
| Push Unsubscribed | message.push.unsubscribed | ユーザーがプッシュからサブスクライブ解除しました。 |
| In-App Impression | message.iam.displayed | アプリ内メッセージが表示されました。 |
| In-App Clicked | message.iam.clicked | アプリ内メッセージがクリックされました。 |
| In-App Page Viewed | message.iam.pagedisplayed | アプリ内ページが表示されました。 |
| Email Sent | message.email.sent | メールが配信されました。 |
| Email Received | message.email.received | 受信者のメールサーバーでメールが受け入れられました。 |
| Email Opened | message.email.opened | メールが開かれました。Email Reportsを参照してください。 |
| Email Link Clicked | message.email.clicked | メール内のリンクがクリックされました。 |
| Email Unsubscribed | message.email.unsubscribed | 受信者がサブスクライブ解除しました。 |
| Email Marked Spam | message.email.resporedasspam | スパムとしてマークされました。Email Deliverabilityを参照してください。 |
| Email Bounced | message.email.hardbounced | 永続的な配信失敗によるバウンス。 |
| Email Failed | message.email.failed | 配信が失敗しました。 |
| Email Suppressed | message.email.supressed | 抑制リストにより抑制されました。 |
| SMS Sent | message.sms.sent | SMSが送信されました。 |
| SMS Delivered | message.sms.delivered | SMSが正常に配信されました。 |
| SMS Failed | message.sms.failed | SMSの配信に失敗しました。 |
| SMS Undelivered | message.sms.undelivered | SMSが拒否されたか到達不可能です。 |
イベントデータスキーマ
ユーザーが生成する各メッセージイベントには、以下のメタデータがレコードに添付されます。| 列名 | タイプ | 説明 |
|---|---|---|
event_id | UUID | イベントの一意の識別子 |
event_timestamp | Timestamp | イベント発生時刻 |
event_kind | String | イベントの種類 |
subscription_device_type | String | デバイスタイプ(例:iOS、Android、Web、Email、SMS) |
language | String | サブスクリプションの言語コード |
version | String | 統合バージョン |
device_os | String | デバイスのオペレーティングシステムバージョン |
device_type | Number | 数値デバイスタイプ |
token | String | プッシュトークン、電話番号、またはメール |
subscription_id | UUID | Subscription ID |
subscribed | Boolean | サブスクリプションステータス |
onesignal_id | UUID | OneSignalユーザーID |
last_active | String | 最終アクティブタイムスタンプ |
sdk | String | OneSignal SDKバージョン |
external_id | String | 統合ユーザーIDと一致する必要がある外部ユーザーID |
app_id | UUID | OneSignalからのApp ID |
template_id | UUID | Template ID(該当する場合) |
message_id | UUID | メッセージバッチ/リクエストID |
message_name | String | メッセージの名前 |
message_title | String | メッセージタイトル(英語のみ) |
message_contents | String | 切り捨てられたメッセージ本文(英語のみ) |
_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(データガバナンスに推奨)
Databricks Personal Access Tokenを作成
- DatabricksワークスペースのUser Settingsに移動します
- Developerタブをクリックし、次にAccess tokensをクリックします
- Generate new tokenをクリックします
- 「OneSignal Integration」のようなコメントを入力し、有効期限を設定します(90日を推奨)
- 生成されたトークンを保存します(OneSignalに必要です)
SQL Warehouseアクセスを構成
- DatabricksワークスペースのSQL Warehousesに移動します
- OneSignalアクセス用のSQL Warehouseを選択または作成します
- 接続詳細からServer HostnameとHTTP Pathをメモします
- Warehouseがイベントデータテーブルにアクセスできることを確認します
テーブル権限を付与
OneSignalに統合を追加
- Server Hostname:Databricks SQL Warehouseホスト名
- HTTP Path:SQL Warehouse HTTPパス
- Personal Access Token:ステップ1で作成したトークン
- Catalog(オプション):Unity Catalogを使用している場合はUnity Catalog名
イベントデータソースを構成
- Database/Schema:イベントテーブルを含むデータベースまたはスキーマ名
- Table:イベントレコードを含むテーブル名(例:
user_events) - Event Query:イベントデータをフィルタリングまたは変換するオプションのSQLクエリ
- イベント名/タイプ(String)
- ユーザー識別子(String)
- イベントタイムスタンプ(Timestamp)
- 追加のイベントプロパティ
接続をテスト
イベントデータマッピング
をOneSignalのカスタムイベント形式にマッピングします:| OneSignalフィールド | 説明 | 必須 | |
|---|---|---|---|
name | event_name | イベント識別子 | はい |
external_id | user_id | ユーザー識別子 | はい |
timestamp | event_timestamp | イベントが発生した時刻 | いいえ |
properties | event_data | いいえ |
高度な構成
Unity Catalog統合
ガバナンスされたデータアクセスのためにUnity Catalogを活用します:Delta Lakeの最適化
より良いクエリパフォーマンスのためにイベントテーブルを最適化します:- パーティショニング:より高速な時間ベースのクエリのために日付(
event_date)でパーティション分割 - Z-Ordering:より良いフィルタリングのために
user_idとevent_nameでZ-order - Delta Lake機能:自動最適化のためにliquid clusteringを使用
ストリーミングイベント処理
リアルタイムイベント処理については、次を検討してください:- Structured Streaming:イベントが到着したときに処理
- Delta Live Tables:堅牢なイベント処理パイプラインを構築
- Auto Loader:新しいイベントファイルを継続的に取り込む