OneSignalのレガシー統合でSnowflakeを使用している場合は、Snowflakeレガシー統合ガイドを参照してください。

OneSignal Snowflake統合の概要
概要
OneSignal + Snowflake統合は、2つの強力なデータパイプラインをサポートしています:- エクスポート:OneSignalからSnowflakeにメッセージングイベントデータ(プッシュ、メール、SMS、アプリ内)を自動的に送信し、分析とレポート作成を行います。
- インポート:Snowflakeデータセットからカスタムユーザーイベントを OneSignalに同期して、自動Journeyとパーソナライズされたメッセージングをトリガーします。
OneSignalイベントをSnowflakeにエクスポート
メッセージングのパフォーマンスとエンゲージメントイベント(送信、開封、クリックなど)をSnowflakeに送信して以下を実現します:- カスタムダッシュボードとレポートを構築
- チャネル全体の配信とエンゲージメントのトレンドを追跡
- OneSignalデータを他のビジネスデータと組み合わせて分析
- OneSignal Professionalプラン(無料アプリでは利用できません)
- Snowflakeアカウント
- Snowflakeでのセットアップ用のSECURITYADMINまたはACCOUNTADMINロール
1. Snowflakeアカウントの詳細を収集
統合を構成する前に、Snowflakeアカウントから以下の情報を収集します:- Snowflakeホスト:
<account_identifier>.snowflakecomputing.com形式のアカウントURL - データベース名:OneSignalがイベントデータを書き込むデータベース
- スキーマ名:OneSignalテーブル用のデータベース内のスキーマ(OneSignalによって自動作成されます)
- ウェアハウス名:データロード操作に使用するウェアハウス

Snowflakeアカウント識別子の場所
2. Snowflakeでセットアップスクリプトを実行
Snowflakeウェアハウスで以下のSQLスクリプトを実行して、OneSignalに必要なロール、ユーザー、ウェアハウス、データベースを作成します:スクリプトの上部にある変数値をカスタマイズして、命名規則に合わせることができます。既存のウェアハウスまたはデータベースを使用している場合は、それに応じてスクリプトを変更してください。
3. 認証用のキーペアを生成
OneSignalは、Snowflakeアカウントへの安全なアクセスのためにキーペア認証を必要とします。キーを生成して構成するには、次の手順に従います:1
秘密鍵を生成
次のコマンドのいずれかを実行して秘密鍵を生成します:暗号化されていない秘密鍵(より簡単ですが、安全性は低くなります):暗号化された秘密鍵(本番環境に推奨):暗号化されたキーを使用する場合は、パスフレーズの作成を求められます。このパスフレーズは安全に保存してください。OneSignalを構成する際に必要になります。
2
公開鍵を生成
秘密鍵から公開鍵を生成します:
3
Snowflakeユーザーに公開鍵を割り当て
公開鍵ファイルの内容(ヘッダーとフッター行を除く)をコピーし、Snowflakeで次のSQLコマンドを実行します:
<YOUR_PUBLIC_KEY_CONTENT>をキーの内容に置き換えます(-----BEGIN PUBLIC KEY-----と-----END PUBLIC KEY-----の行は除く)。4. OneSignalに接続
1
統合を有効化
OneSignalで、Data > Integrations > Snowflakeに移動します。
2
詳細を入力
- ホスト:
<your_account>.snowflakecomputing.com - データベース:例:
ONESIGNAL - スキーマ
- テーブル:例:
message_events - ユーザー:
ONESIGNAL_USER(または作成したユーザー名) - 秘密鍵:秘密鍵ファイル(
rsa_key.p8)の内容を貼り付けます - 秘密鍵のパスフレーズ(オプション、秘密鍵が暗号化されている場合のみ)
3
統合を構成
- 同期頻度: 15分ごとの頻度
- スキーマ/テーブル名:
onesignal_events_<app-id>およびmessage_eventsとして事前設定(編集可能) - イベントタイプ: 同期するイベントを選択—すべてまたは必要なものだけを選択
4
イベントを選択
Snowflakeウェアハウスで受信したいイベントを選択します。
5
セットアップを完了
Saveをクリックして、成功の確認を待ちます
初回のデータ同期がSnowflakeに表示されるまでに15〜30分かかる場合があります。待機中に、プッシュ、メール、アプリ内、またはSMS経由でメッセージを送信して、選択したイベントをトリガーします。
5. Snowflakeでデータを表示
初回同期が完了したら、OneSignalイベントデータをクエリします:スキーマの欠落、権限エラー、形式が正しくないイベントなどの問題が発生した場合は、
[email protected]にお問い合わせください。メッセージイベントとプロパティ
メッセージイベントの種類
プロパティ: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のようなパターンで命名され、メインスキーマに統合される前の処理中にデータを一時的に保存します。これらのステージングデータセットは、合理化されたワークフローを維持するために不可欠であり、削除しないでください。自動的に再作成されます。
Snowflakeからイベントをインポート
SnowflakeからOneSignalに行動イベントデータを送信して以下を実現します:- ユーザーアクティビティに基づいてJourneyをトリガー
- 行動データに基づいてメッセージングをパーソナライズ
- アウトバウンドメッセージイベント用のEvent Streamsへのアクセス(プランの制限と超過料金が適用されます)
- インバウンドイベント同期用のCustom Eventsへのアクセス(プランの制限と超過料金が適用されます)
- 更新されたアカウントプラン(無料アプリでは利用できません)
- ウェアハウスアクセス権を持つSnowflakeアカウント
- Snowflakeテーブルまたはビューに保存されたイベントデータ
- OneSignalからSnowflakeインスタンスへのネットワーク接続
- 適切な権限を持つユーザー認証情報
1
OneSignal専用のロールを作成
Snowflakeのベストプラクティスに従ってロール階層を作成します:
2
専用ウェアハウスを作成
OneSignal操作用にコスト最適化されたウェアハウスを作成します:
3
ユーザーを作成して権限を付与
OneSignalユーザーを作成し、イベントデータへのアクセスを許可します:
4
記帳データベースを作成(高度な同期エンジン)
OneSignalの同期状態管理用のプライベートデータベースを作成します:
5
認証を設定
セキュリティを強化するために、キーペア認証(推奨)を設定します:
- Snowflakeのドキュメントに従って公開鍵/秘密鍵のペアを生成します
- Snowflakeユーザーに公開鍵を設定します
- OneSignalの接続設定で秘密鍵を使用します
6
OneSignalに接続
OneSignalで、Data > Integrationsに移動し、Add Integrationをクリックします。Snowflakeを選択し、以下の接続詳細を入力します:
- アカウント名: Snowflakeアカウント識別子(例:
abc123.us-east-1) - ウェアハウス:
CENSUS_WAREHOUSE - ユーザー:
CENSUS - データベース: イベントデータのデータベース名
- スキーマ: イベントデータのスキーマ名
- 認証: キーペア(秘密鍵とオプションのパスフレーズを提供)
イベントデータマッピング
をOneSignalのカスタムイベント形式にマッピングします:| OneSignalフィールド | 説明 | 必須 | |
|---|---|---|---|
name | event_name | イベント識別子 | はい |
external_id | user_id | ユーザー識別子 | はい |
timestamp | event_timestamp | イベントが発生した時刻 | いいえ |
properties | event_data | いいえ |
イベントテーブルスキーマの例
SQLクエリモード
カスタムSQLクエリを記述してイベントデータを変換します:高度な設定
ウェアハウスコストの管理
- コスト最適化のためにX-Smallウェアハウスサイズを使用
- 自動サスペンド(60秒)と自動再開を設定
- オフピーク時間に同期をスケジュール
- 他のバッチ処理システムとウェアハウスを共有することを検討
ライブ同期のサポート
リアルタイムイベント処理の場合、イベントテーブルで変更追跡を有効にします:ネットワークセキュリティ
Snowflakeの許可IPネットワークポリシーを使用している場合は、OneSignalのIPアドレスを許可リストに追加してください。現在のIP範囲については、OneSignalサポートにお問い合わせください。制限事項
- 複雑な分析クエリはウェアハウスのパフォーマンスとコストに影響を与える可能性があります
- ユーザー/パスワード認証は2025年11月に非推奨になります
- CENSUSデータベースはOneSignal操作専用に予約されています
FAQ
どの認証方法を使用すればよいですか?
キーペア認証を使用してください(推奨)。ユーザー/パスワード認証は、2025年11月からSnowflakeによってブロックされます。既存のウェアハウスを使用できますか?
はい、dbtやFivetranなどの他のバッチ処理システムとウェアハウスを共有してコストを最適化できます。ウェアハウスにイベント処理のニーズに十分な容量があることを確認してください。コストを最適化するにはどうすればよいですか?
- X-Smallウェアハウスサイズを使用
- アグレッシブな自動サスペンド(60秒)を設定
- オフピーク時間に同期をスケジュール
- 連続同期の代わりに時間単位/日次同期を使用