> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Snowflake（レガシー）

> SnowflakeからOneSignalにカスタムイベントを同期して、ユーザーの行動に基づいた自動Journeyとパーソナライズされたメッセージングキャンペーンをトリガーします。

export const PLATFORM_0 = "Snowflake"

export const DATA_TYPE_0 = "event data"

export const COLUMN_HEADER_0 = "Snowflake Column"

export const PROPERTIES_DESCRIPTION_0 = "Event metadata as VARIANT/JSON"

<Frame caption="OneSignal Snowflake統合の概要">
  <img src="https://mintcdn.com/onesignal/YOTSrtBSoqdrJ37A/images/docs/4bd3285-onesignal-snowflake-integration-2.png?fit=max&auto=format&n=YOTSrtBSoqdrJ37A&q=85&s=c41bc1d77c30e6c282bb0bfdbcd67767" width="1280" height="720" data-path="images/docs/4bd3285-onesignal-snowflake-integration-2.png" />
</Frame>

***

## 概要

OneSignal + Snowflake統合は、2つの強力なデータパイプラインをサポートしています：

* **エクスポート**：OneSignalからSnowflakeにメッセージングイベントデータ（プッシュ、メール、SMS、アプリ内）を自動的に送信し、分析とレポート作成を行います。
* **インポート**：Snowflakeデータセットからカスタムユーザーイベントを OneSignalに同期して、自動Journeyとパーソナライズされたメッセージングをトリガーします。

これらの統合により、ユーザーエンゲージメントデータを完全に制御でき、高度な分析とリアルタイムの行動駆動型メッセージングが可能になります。

***

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

メッセージングのパフォーマンスとエンゲージメントイベント（送信、開封、クリックなど）をSnowflakeに送信して以下を実現します：

* カスタムダッシュボードとレポートを構築
* チャネル全体の配信とエンゲージメントのトレンドを追跡
* OneSignalデータを他のビジネスデータと組み合わせて分析

**要件**

* OneSignal **Professionalプラン**（無料アプリでは利用できません）
* [Snowflakeアカウント](https://docs.snowflake.com/en/user-guide/getting-started-tutorial)
* Snowflakeアカウントに`IMPORT SHARE`と`CREATE DATABASE`のロールがあることを確認してください。
  * 共有を承認するには`ACCOUNTADMIN`ロールの使用を推奨します。

**セットアップ手順**

### 1. サインアップ

Snowflake統合を有効化するには、Message Events Dataの[OneSignal Marketplaceリスティング](https://app.snowflake.com/marketplace/listing/GZ2FQZLH2NP/onesignal-message-events-data?search=onesignal\&originTab=provider\&providerName=OneSignal\&profileGlobalName=GZSTZLH2MW)からアクセスをリクエストする必要があります。その後、詳細情報を取得するために当社からチームに連絡します。

### 2. アカウント情報の提供

チームと連絡が取れたら、データを共有できるようにいくつかの詳細情報を提供していただく必要があります。**Snowflake Account ID**と**Snowflake Organization ID**が必要です。この情報を取得する最も簡単な方法は、「Copy account identifier」ボタンをクリックすることです（下図を参照）。

<Info>
  [OneSignal Marketplaceリスティング](https://app.snowflake.com/marketplace/listing/GZ2FQZLH2NP/onesignal-message-events-data?search=onesignal\&originTab=provider\&providerName=OneSignal\&profileGlobalName=GZSTZLH2MW)を通じて当社と連絡を取る必要があります。ただし、アカウント情報の提供についてさらに質問がある場合は、`snowflake-data-sharing@onesignal.com`までメールでお問い合わせください。
</Info>

<Frame caption="Snowflakeアカウント識別子のコピー">
  <img src="https://mintcdn.com/onesignal/4HyuQPBpu-4xjmQC/images/docs/cf472c3-Screen_Shot_2023-06-27_at_4.08.19_PM.png?fit=max&auto=format&n=4HyuQPBpu-4xjmQC&q=85&s=ad89f70c336cfa9fc66849021cdab551" width="1554" height="620" data-path="images/docs/cf472c3-Screen_Shot_2023-06-27_at_4.08.19_PM.png" />
</Frame>

プログラムへの参加が承認されたら、以下の項目に注意してください：

* OneSignalからプログラムへの参加を歓迎するメール
* データ共有が完了したことを通知するSnowflakeからのメール

<Frame caption="Snowflakeデータ共有通知メール">
  <img src="https://mintcdn.com/onesignal/jBdBk5XvQR5eKOks/images/docs/7219faf-Untitled.png?fit=max&auto=format&n=jBdBk5XvQR5eKOks&q=85&s=3c4af6e7ba0f66836b5a2e91689f282e" width="1238" height="1078" data-path="images/docs/7219faf-Untitled.png" />
</Frame>

### 3. Snowflake内でデータ共有を承認

データ共有が完了したことを通知するSnowflakeからのメールを受信したら、Snowflakeアプリにログインしてデータ共有を承認できます。

**Data** → **Private Sharing**に移動すると、新しいPrivately Shared Listingが表示されます。**Get**をクリックすると、データがお客様のリージョンにレプリケートされ始めます。

<Frame caption="Snowflakeプライベート共有インターフェース">
  <img src="https://mintcdn.com/onesignal/RWtLFPeffHrC81wI/images/docs/a8dfc31-Untitled_1.png?fit=max&auto=format&n=RWtLFPeffHrC81wI&q=85&s=cb692bad2c9be897bf1c40185911e594" width="1086" height="516" data-path="images/docs/a8dfc31-Untitled_1.png" />
</Frame>

**注意**：**Get**ボタンが利用できず、**Request**ボタンが表示されている場合、共有を実行しようとしているロールの権限に`CREATE DATABASE`または`IMPORT SHARE`が含まれていません。`ACCOUNTADMIN`ロールに切り替えることをお勧めします。

データのレプリケーションには時間がかかります。データが利用可能になると、Snowflakeから追加のメールが送信されます。次のようなダイアログが表示されます

<Frame caption="データレプリケーションステータスダイアログ">
  <img src="https://mintcdn.com/onesignal/YOTSrtBSoqdrJ37A/images/docs/4d78360-Untitled_2.png?fit=max&auto=format&n=YOTSrtBSoqdrJ37A&q=85&s=406c4f7f2884deea338e690e14d76e44" width="664" height="886" data-path="images/docs/4d78360-Untitled_2.png" />
</Frame>

データが使用可能になると、リスティングに新しい**Get**ボタンが表示されます。**Get**ボタンをクリックすると、新しいダイアログが表示されます

<Frame caption="データベース構成ダイアログ">
  <img src="https://mintcdn.com/onesignal/3zq1PvSaqvUE2bIx/images/docs/28ba7ca-Untitled_3.png?fit=max&auto=format&n=3zq1PvSaqvUE2bIx&q=85&s=55e9e64a31cd20e552196d80b0fe7196" width="1320" height="1314" data-path="images/docs/28ba7ca-Untitled_3.png" />
</Frame>

データベースとデータベースロールの名前を任意の名前に設定します。次に**Get**をクリックします

<Frame caption="データ共有セットアップの完了">
  <img src="https://mintcdn.com/onesignal/tc0EvmtSSX56SX0c/images/docs/8dae239-Untitled_4.png?fit=max&auto=format&n=tc0EvmtSSX56SX0c&q=85&s=6ee68952c4a8e3c2cb430ba2e20ec136" width="694" height="698" data-path="images/docs/8dae239-Untitled_4.png" />
</Frame>

<Check>
  以上です！OneSignalからSnowflakeへのデータ同期が開始されました。同期の頻度は24時間に1回に設定されているため、初期データは翌日まで利用できない場合があります。
</Check>

## イベントとプロパティ

SnowflakeのMarketplaceで利用可能なデータの概要

### メッセージイベントデータ

詳細については、[Event Streams](./event-streams#event-data)を参照してください。

ユーザーによって生成された各メッセージイベントには、以下のメタデータがレコードに添付されます。

| カラム名                         | タイプ             | 説明                                                                      | 例                                                     |
| ---------------------------- | --------------- | ----------------------------------------------------------------------- | ----------------------------------------------------- |
| event\_id                    | UUID            | イベントを表す一意のID                                                            | `dc76df03-287c-403a-aabd-b2d4fe44e5c6`                |
| event\_kind                  | string          | 発生したイベントのタイプ。イベントの種類のリストは[こちら](./snowflake#message-event-kinds)で確認できます。 | `message.email.opened`                                |
| event\_impression\_timestamp | unix\_timestamp | OneSignalがイベントを処理した時刻                                                   | `1684951205`                                          |
| subscription\_id             | UUID            | デバイス/サブスクリプションを表す一意のID                                                  | `6e8b6978-75a4-4882-878c-2d15a78c2409`                |
| subscription\_language       | string          | このサブスクリプションの言語                                                          | `en`                                                  |
| subscription\_timezone       | integer         | このサブスクリプションの指定されたタイムゾーン                                                 | `-25200`                                              |
| subscription\_device\_type   | string          | このサブスクリプションが使用するデバイスのタイプ                                                | `SMS`                                                 |
| onesignal\_id                | UUID            | インプレッションを行ったユーザーのonesignal\_id                                          | `dc76df03-287c-403a-aabd-b2d4fe44e5c6`                |
| external\_id                 | string          | インプレッションを行ったユーザーのexternal\_id                                           | `MyExternalId`                                        |
| message\_id                  | UUID            | メッセージを表す一意のID                                                           | `dc76df03-287c-403a-aabd-b2d4fe44e5c6`                |
| message\_name                | string          | 通知/メッセージの人間が読める形式のID                                                    | `Campaign 1`                                          |
| message\_title               | string          | 通知/メッセージのタイトル。*現在は英語のみ*                                                 | `Bonus 50 coins when you play!`                       |
| message\_body                | string          | メッセージの本文（短縮版）*現在は英語のみ*                                                  | `Play against your friends and earn an additional...` |

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

詳細については、[Event Streams](./event-streams#event-data)を参照してください。

メッセージイベントは、SnowflakeのMarketplaceで提供する最初のデータカテゴリです。追加のデータカテゴリのリクエストがある場合は、`snowflake-data-sharing@onesignal.com`までお問い合わせください！

### データ保持

Snowflake経由でOneSignalから共有されるデータは、30日間保持されます。この期間を超えてデータを保持するには、関連データを独自のテーブルにコピーすることをお勧めします。

***

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

SnowflakeからOneSignalに行動イベントデータを送信して以下を実現します：

* ユーザーアクティビティに基づいてJourneyをトリガー
* 行動データに基づいてメッセージングをパーソナライズ

**要件**

* アウトバウンドメッセージイベント用の[Event Streams](/docs/ja/event-streams)へのアクセス（プランの制限と超過料金が適用されます）
* インバウンドイベント同期用の[Custom Events](/docs/ja/custom-events)へのアクセス（プランの制限と超過料金が適用されます）
* [更新されたアカウントプラン](https://onesignal.com/pricing)（無料アプリでは利用できません）

- ウェアハウスアクセス権を持つ**Snowflakeアカウント**
- Snowflakeテーブルまたはビューに保存された**イベントデータ**
- OneSignalからSnowflakeインスタンスへの**ネットワーク接続**
- 適切な権限を持つ**ユーザー認証情報**

**セットアップ手順**

<Steps>
  <Step title="OneSignal専用のロールを作成">
    Snowflakeのベストプラクティスに従ってロール階層を作成します：

    ```sql theme={null}
    -- 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;
    ```
  </Step>

  <Step title="専用ウェアハウスを作成">
    OneSignal操作用にコスト最適化されたウェアハウスを作成します：

    ```sql theme={null}
    -- 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;
    ```
  </Step>

  <Step title="ユーザーを作成して権限を付与">
    OneSignalユーザーを作成し、イベントデータへのアクセスを許可します：

    ```sql theme={null}
    -- 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;
    ```
  </Step>

  <Step title="記帳データベースを作成（高度な同期エンジン）">
    OneSignalの同期状態管理用のプライベートデータベースを作成します：

    ```sql theme={null}
    -- 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;
    ```

    <Warning>
      基本同期エンジンまたは読み取り専用モードを使用する場合は、このステップをスキップしてください。
    </Warning>
  </Step>

  <Step title="認証を設定">
    セキュリティを強化するために、キーペア認証（推奨）を設定します：

    1. [Snowflakeのドキュメント](https://docs.snowflake.com/en/user-guide/key-pair-auth)に従って公開鍵/秘密鍵のペアを生成します
    2. Snowflakeユーザーに公開鍵を設定します
    3. OneSignalの接続設定で秘密鍵を使用します

    または、パスワード認証を使用することもできます（非推奨 - 2025年11月にブロックされます）。
  </Step>

  <Step title="OneSignalに接続">
    OneSignalで、**Data > Integrations**に移動し、**Add Integration**をクリックします。

    **Snowflake**を選択し、以下の接続詳細を入力します：

    * **アカウント名：** Snowflakeアカウント識別子（例：`abc123.us-east-1`）
    * **ウェアハウス：** `CENSUS_WAREHOUSE`
    * **ユーザー：** `CENSUS`
    * **データベース：** イベントデータのデータベース名
    * **スキーマ：** イベントデータのスキーマ名
    * **認証：** キーペア（秘密鍵とオプションのパスフレーズを提供）
  </Step>
</Steps>

***

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

{PLATFORM_0} {DATA_TYPE_0}をOneSignalのカスタムイベント形式にマッピングします：

| OneSignalフィールド | {COLUMN_HEADER_0} | 説明                         | 必須  |
| -------------- | ----------------- | -------------------------- | --- |
| `name`         | `event_name`      | イベント識別子                    | はい  |
| `external_id`  | `user_id`         | ユーザー識別子                    | はい  |
| `timestamp`    | `event_timestamp` | イベントが発生した時刻                | いいえ |
| `properties`   | `event_data`      | {PROPERTIES_DESCRIPTION_0} | いいえ |

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

```sql theme={null}
-- 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クエリを記述してイベントデータを変換します：

```sql theme={null}
-- 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秒）と自動再開を設定
* オフピーク時間に同期をスケジュール
* 他のバッチ処理システムとウェアハウスを共有することを検討

#### ライブ同期のサポート

リアルタイムイベント処理の場合、イベントテーブルで変更追跡を有効にします：

```sql theme={null}
ALTER TABLE "analytics"."user_events" SET CHANGE_TRACKING = TRUE;
```

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

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

***

## 制限事項

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

***

## OneSignalとのデータ共有を切断

OneSignalとのデータ共有を無効化するには、`snowflake-data-sharing@onesignal.com`までメールでリクエストしてください。

***

## FAQ

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

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

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

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

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

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

***
