メインコンテンツへスキップ
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に必要なロール、ユーザー、ウェアハウス、データベースを作成します:
begin;

   -- create variables for user / role / warehouse / database (needs to be uppercase for objects)
   set role_name = 'ONESIGNAL_ROLE';
   set user_name = 'ONESIGNAL_USER';
   set warehouse_name = 'ONESIGNAL_WAREHOUSE';
   set database_name = 'ONESIGNAL';

   -- change role to securityadmin for user / role steps
   use role securityadmin;

   -- create role for onesignal
   create role if not exists identifier($role_name);
   grant role identifier($role_name) to role SYSADMIN;

   -- create a user for onesignal
   create user if not exists identifier($user_name)
   default_role = $role_name
   default_warehouse = $warehouse_name;

   grant role identifier($role_name) to user identifier($user_name);

   -- set binary_input_format to BASE64
   ALTER USER identifier($user_name) SET BINARY_INPUT_FORMAT = 'BASE64';

   -- set timestamp_input_format to AUTO for the user
   ALTER USER identifier($user_name) SET TIMESTAMP_INPUT_FORMAT = 'AUTO';

   -- change role to sysadmin for warehouse / database steps
   use role sysadmin;

   -- create a warehouse for onesignal
   create warehouse if not exists identifier($warehouse_name)
   warehouse_size = xsmall
   warehouse_type = standard
   auto_suspend = 60
   auto_resume = true
   initially_suspended = true;

   -- create database for onesignal
   create database if not exists identifier($database_name);

   -- grant onesignal role access to warehouse
   grant USAGE
   on warehouse identifier($warehouse_name)
   to role identifier($role_name);

   -- grant onesignal access to database
   grant CREATE SCHEMA, MONITOR, USAGE
   on database identifier($database_name)
   to role identifier($role_name);

 commit;
スクリプトの上部にある変数値をカスタマイズして、命名規則に合わせることができます。既存のウェアハウスまたはデータベースを使用している場合は、それに応じてスクリプトを変更してください。

3. 認証用のキーペアを生成

OneSignalは、Snowflakeアカウントへの安全なアクセスのためにキーペア認証を必要とします。キーを生成して構成するには、次の手順に従います:
1

秘密鍵を生成

次のコマンドのいずれかを実行して秘密鍵を生成します:暗号化されていない秘密鍵(より簡単ですが、安全性は低くなります):
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
暗号化された秘密鍵(本番環境に推奨):
openssl genrsa 2048 | openssl pkcs8 -topk8 -v2 aes256 -inform PEM -out rsa_key.p8
暗号化されたキーを使用する場合は、パスフレーズの作成を求められます。このパスフレーズは安全に保存してください。OneSignalを構成する際に必要になります。
2

公開鍵を生成

秘密鍵から公開鍵を生成します:
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
3

Snowflakeユーザーに公開鍵を割り当て

公開鍵ファイルの内容(ヘッダーとフッター行を除く)をコピーし、Snowflakeで次のSQLコマンドを実行します:
ALTER USER ONESIGNAL_USER SET RSA_PUBLIC_KEY='<YOUR_PUBLIC_KEY_CONTENT>';
<YOUR_PUBLIC_KEY_CONTENT>をキーの内容に置き換えます(-----BEGIN PUBLIC KEY----------END PUBLIC KEY-----の行は除く)。
秘密鍵ファイルを安全に保管してください。次のステップでOneSignalに提供する必要があります。秘密鍵を公開したり、バージョン管理にコミットしたりしないでください。

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イベントデータをクエリします:
-- View recent message events
SELECT *
FROM <your-database>.<your-schema>.message_events
ORDER BY _CREATED DESC
LIMIT 100;
スキーマの欠落、権限エラー、形式が正しくないイベントなどの問題が発生した場合は、[email protected]にお問い合わせください。

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

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

プロパティ: 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のようなパターンで命名され、メインスキーマに統合される前の処理中にデータを一時的に保存します。これらのステージングデータセットは、合理化されたワークフローを維持するために不可欠であり、削除しないでください。自動的に再作成されます。

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

SnowflakeからOneSignalに行動イベントデータを送信して以下を実現します:
  • ユーザーアクティビティに基づいてJourneyをトリガー
  • 行動データに基づいてメッセージングをパーソナライズ
要件
  • アウトバウンドメッセージイベント用のEvent Streamsへのアクセス(プランの制限と超過料金が適用されます)
  • インバウンドイベント同期用のCustom Eventsへのアクセス(プランの制限と超過料金が適用されます)
  • 更新されたアカウントプラン(無料アプリでは利用できません)
  • ウェアハウスアクセス権を持つSnowflakeアカウント
  • Snowflakeテーブルまたはビューに保存されたイベントデータ
  • OneSignalからSnowflakeインスタンスへのネットワーク接続
  • 適切な権限を持つユーザー認証情報
セットアップ手順
1

OneSignal専用のロールを作成

Snowflakeのベストプラクティスに従ってロール階層を作成します:
-- Create a role for the census user
CREATE ROLE CENSUS_ROLE;

-- Ensure the sysadmin role inherits any privileges the census role is granted
GRANT ROLE CENSUS_ROLE TO ROLE SYSADMIN;
2

専用ウェアハウスを作成

OneSignal操作用にコスト最適化されたウェアハウスを作成します:
-- Create a warehouse for the census role, optimizing for cost over performance
CREATE WAREHOUSE CENSUS_WAREHOUSE WITH
    WAREHOUSE_SIZE = XSMALL
    AUTO_SUSPEND = 60
    AUTO_RESUME = TRUE
    INITIALLY_SUSPENDED = FALSE;

GRANT USAGE ON WAREHOUSE CENSUS_WAREHOUSE TO ROLE CENSUS_ROLE;
GRANT OPERATE ON WAREHOUSE CENSUS_WAREHOUSE TO ROLE CENSUS_ROLE;
GRANT MONITOR ON WAREHOUSE CENSUS_WAREHOUSE TO ROLE CENSUS_ROLE;
3

ユーザーを作成して権限を付与

OneSignalユーザーを作成し、イベントデータへのアクセスを許可します:
-- Create the census user
CREATE USER CENSUS WITH
    DEFAULT_ROLE = CENSUS_ROLE
    DEFAULT_WAREHOUSE = CENSUS_WAREHOUSE
    PASSWORD = '<strong-unique-password>';

GRANT ROLE CENSUS_ROLE TO USER CENSUS;

-- Grant access to your event data (replace with your actual database/schema)
GRANT USAGE ON DATABASE "<your-database>" TO ROLE CENSUS_ROLE;
GRANT USAGE ON SCHEMA "<your-database>"."<your-schema>" TO ROLE CENSUS_ROLE;
GRANT SELECT ON ALL TABLES IN SCHEMA "<your-database>"."<your-schema>" TO ROLE CENSUS_ROLE;
GRANT SELECT ON FUTURE TABLES IN SCHEMA "<your-database>"."<your-schema>" TO ROLE CENSUS_ROLE;
GRANT SELECT ON ALL VIEWS IN SCHEMA "<your-database>"."<your-schema>" TO ROLE CENSUS_ROLE;
GRANT SELECT ON FUTURE VIEWS IN SCHEMA "<your-database>"."<your-schema>" TO ROLE CENSUS_ROLE;
4

記帳データベースを作成(高度な同期エンジン)

OneSignalの同期状態管理用のプライベートデータベースを作成します:
-- Create a private bookkeeping database
CREATE DATABASE "CENSUS";
GRANT ALL PRIVILEGES ON DATABASE "CENSUS" TO ROLE CENSUS_ROLE;

CREATE SCHEMA "CENSUS"."CENSUS";
GRANT ALL PRIVILEGES ON SCHEMA "CENSUS"."CENSUS" TO ROLE CENSUS_ROLE;
GRANT CREATE STAGE ON SCHEMA "CENSUS"."CENSUS" TO ROLE CENSUS_ROLE;
基本同期エンジンまたは読み取り専用モードを使用する場合は、このステップをスキップしてください。
5

認証を設定

セキュリティを強化するために、キーペア認証(推奨)を設定します:
  1. Snowflakeのドキュメントに従って公開鍵/秘密鍵のペアを生成します
  2. Snowflakeユーザーに公開鍵を設定します
  3. OneSignalの接続設定で秘密鍵を使用します
または、パスワード認証を使用することもできます(非推奨 - 2025年11月にブロックされます)。
6

OneSignalに接続

OneSignalで、Data > Integrationsに移動し、Add Integrationをクリックします。Snowflakeを選択し、以下の接続詳細を入力します:
  • アカウント名: Snowflakeアカウント識別子(例:abc123.us-east-1
  • ウェアハウス: CENSUS_WAREHOUSE
  • ユーザー: CENSUS
  • データベース: イベントデータのデータベース名
  • スキーマ: イベントデータのスキーマ名
  • 認証: キーペア(秘密鍵とオプションのパスフレーズを提供)

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

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

イベントテーブルスキーマの例

-- Example Snowflake event table
CREATE TABLE analytics.user_events (
    event_id STRING,
    event_name STRING NOT NULL,
    user_id STRING NOT NULL,
    event_timestamp TIMESTAMP_TZ DEFAULT CURRENT_TIMESTAMP(),
    event_properties VARIANT,
    session_id STRING,
    device_type STRING
);

SQLクエリモード

カスタムSQLクエリを記述してイベントデータを変換します:
-- Example: Recent high-value events
SELECT
    event_name,
    user_id,
    event_timestamp,
    event_properties
FROM analytics.user_events
WHERE event_timestamp >= DATEADD(day, -7, CURRENT_TIMESTAMP())
    AND event_properties:value::NUMBER > 100
ORDER BY event_timestamp DESC;

高度な設定

ウェアハウスコストの管理

  • コスト最適化のためにX-Smallウェアハウスサイズを使用
  • 自動サスペンド(60秒)と自動再開を設定
  • オフピーク時間に同期をスケジュール
  • 他のバッチ処理システムとウェアハウスを共有することを検討

ライブ同期のサポート

リアルタイムイベント処理の場合、イベントテーブルで変更追跡を有効にします:
ALTER TABLE "analytics"."user_events" SET CHANGE_TRACKING = TRUE;

ネットワークセキュリティ

Snowflakeの許可IPネットワークポリシーを使用している場合は、OneSignalのIPアドレスを許可リストに追加してください。現在のIP範囲については、OneSignalサポートにお問い合わせください。

制限事項

  • 複雑な分析クエリはウェアハウスのパフォーマンスとコストに影響を与える可能性があります
  • ユーザー/パスワード認証は2025年11月に非推奨になります
  • CENSUSデータベースはOneSignal操作専用に予約されています

FAQ

どの認証方法を使用すればよいですか?

キーペア認証を使用してください(推奨)。ユーザー/パスワード認証は、2025年11月からSnowflakeによってブロックされます。

既存のウェアハウスを使用できますか?

はい、dbtやFivetranなどの他のバッチ処理システムとウェアハウスを共有してコストを最適化できます。ウェアハウスにイベント処理のニーズに十分な容量があることを確認してください。

コストを最適化するにはどうすればよいですか?

  • X-Smallウェアハウスサイズを使用
  • アグレッシブな自動サスペンド(60秒)を設定
  • オフピーク時間に同期をスケジュール
  • 連続同期の代わりに時間単位/日次同期を使用