> ## 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.

# Azure Synapse

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

export const PLATFORM_0 = "Azure Synapse"

export const DATA_TYPE_0 = "event data"

export const COLUMN_HEADER_0 = "Synapse Column"

export const PROPERTIES_DESCRIPTION_0 = "Event metadata as JSON string"

## 概要

OneSignal + Azure Synapse統合により、Azure Synapse AnalyticsワークスペースからOneSignalにカスタムイベントを同期して、ユーザー行動に基づいた自動化されたメッセージングキャンペーンとJourneysをトリガーできます。

Azure Synapse Analyticsは、データ統合、データウェアハウス、分析を組み合わせたMicrosoftのクラウドベース分析サービスです。

***

## 要件

* Access to [Event Streams](/docs/en/event-streams) for outbound message events (Plan limitations and overages apply)
* Access to [Custom Events](/docs/en/custom-events) for inbound event syncing (Plan limitations and overages apply)
* [Updated Account Plan](https://onesignal.com/pricing) (not available on free apps)

### Azure Synapse

* SQLプールアクセスを持つ**Azure Synapseワークスペース**
* 適切な権限を持つ**データベースユーザー**
* 構造化された行動データを含む**イベントテーブル**
* OneSignal IPアドレスの**ファイアウォールアクセス**

***

## セットアップ

<Steps>
  <Step title="OneSignal用の専用ログインを作成">
    強力で一意なパスワードを使用して専用のログインとユーザーアカウントを作成します：

    ```sql theme={null}
    USE <your-database>;

    -- パスワードでサインインする機能を持つcensusログインを作成
    CREATE LOGIN CENSUS WITH PASSWORD = '<strong-unique-password>';

    -- ログイン用のユーザーを作成
    CREATE USER CENSUS FOR LOGIN CENSUS;

    -- censusユーザーにデータベースへの接続機能を付与
    GRANT CONNECT TO CENSUS;
    ```

    <Info>
      `<your-database>`をイベントデータを含む実際のデータベース名に置き換えてください。
    </Info>
  </Step>

  <Step title="読み取り権限を付与">
    イベントデータへの読み取り専用アクセスを提供します：

    ```sql theme={null}
    -- censusユーザーにすべてのテーブルを読み取る機能を付与
    EXEC sp_addrolemember 'db_datareader', CENSUS;

    -- censusユーザーにスキーマとデータを読み取る機能を付与
    -- OneSignalにアクセスさせる各スキーマに対してこれを実行
    GRANT SELECT, VIEW DEFINITION ON SCHEMA::<your-schema> TO CENSUS;
    ```

    <Info>
      `<your-schema>`をイベントデータを含む実際のスキーマ名に置き換えてください。OneSignalにアクセスさせたい各スキーマに対してこのコマンドを繰り返してください。
    </Info>
  </Step>

  <Step title="ファイアウォールアクセスを設定">
    OneSignal IPアドレスを許可するようにAzure Synapseファイアウォールを設定します。

    Windows Azure Management Portalを使用するか、プライマリデータベースで**sp\_set\_firewall\_rule**を実行します：

    ```sql theme={null}
    -- 例：OneSignal IP範囲のファイアウォールルールを追加
    EXEC sp_set_firewall_rule
        N'OneSignal Access',
        'ONESIGNAL_IP_START',
        'ONESIGNAL_IP_END';
    ```

    <Warning>
      お住まいの地域の現在のIPアドレス範囲については、OneSignalサポートにお問い合わせください。
    </Warning>
  </Step>

  <Step title="OneSignalに接続">
    In OneSignal, go to **Data > Integrations** and click **Add Integration**.

    **Azure Synapse**を選択し、次の接続詳細を提供します：

    * **Host:** Synapse SQLエンドポイントホスト名
    * **Port:** 1433（デフォルト）
    * **Database:** データベース名
    * **Username:** `CENSUS`
    * **Password:** ステップ1のパスワード
  </Step>
</Steps>

***

### Event data mapping

Map your {PLATFORM_0} {DATA_TYPE_0} to OneSignal's custom events format:

| OneSignal Field | {COLUMN_HEADER_0} | Description                | Required |
| --------------- | ----------------- | -------------------------- | -------- |
| `name`          | `event_name`      | Event identifier           | Yes      |
| `external_id`   | `user_id`         | User identifier            | Yes      |
| `timestamp`     | `event_timestamp` | When event occurred        | No       |
| `properties`    | `event_data`      | {PROPERTIES_DESCRIPTION_0} | No       |

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

```sql theme={null}
-- Azure Synapseイベントテーブルの例
CREATE TABLE analytics.user_events (
    event_id BIGINT IDENTITY(1,1) PRIMARY KEY,
    event_name NVARCHAR(100) NOT NULL,
    user_id NVARCHAR(255) NOT NULL,
    event_timestamp DATETIME2 DEFAULT GETUTCDATE(),
    event_data NVARCHAR(MAX),
    session_id NVARCHAR(255),
    device_type NVARCHAR(50)
)
WITH (DISTRIBUTION = HASH(user_id), CLUSTERED COLUMNSTORE INDEX);
```

### SQLクエリモード

カスタムSQLクエリを記述してイベントデータを変換します：

```sql theme={null}
-- 例：最近の高価値イベント
SELECT
    event_name,
    user_id,
    event_timestamp,
    event_data
FROM analytics.user_events
WHERE event_timestamp >= DATEADD(day, -7, GETUTCDATE())
    AND JSON_VALUE(event_data, '$.value') > 100
ORDER BY event_timestamp DESC;
```

***

## Azure固有の機能

### 分散アーキテクチャ

* 最適なクエリパフォーマンスのために`user_id`でイベントを分散
* 分析ワークロード用のクラスター化列ストアインデックス
* 大規模イベントデータ用の超並列処理（MPP）

### Azureエコシステムとの統合

* 自動化されたイベントパイプライン用にAzure Data Factoryに接続
* リアルタイムイベントストリーミング用にAzure Event Hubsと統合
* 認証にAzure Active Directoryを活用

***

## 高度なネットワーク構成

OneSignalは、リージョン制約、IPアドレス許可リスト、またはSSHトンネリングを含む高度なネットワーク制御を使用しているAzure Synapseインスタンスに正常に接続できます。

ネットワークアクセスの構成の詳細については、Azure Synapse管理者またはOneSignalサポートにお問い合わせください。

***

## 制限事項

* SQL Server JDBCドライバー接続プロトコルに基づく
* OneSignal IPアドレスの明示的なファイアウォールルールが必要
* 複雑なクエリはSQLプールのパフォーマンスとコストに影響を与える可能性がある
* JSON操作には最適なパフォーマンスのために慎重なインデックス作成が必要

***

## FAQ

### 複数のAzure Synapseスキーマに接続できますか？

はい、イベントデータを含む各スキーマに対して`GRANT SELECT, VIEW DEFINITION ON SCHEMA::<schema>`ステートメントを実行することで、CENSUSユーザーに複数のスキーマへのアクセスを許可できます。

### OneSignal用にファイアウォールアクセスを設定する方法は？

Azure Management Portalまたは`sp_set_firewall_rule`を使用してOneSignalのIPアドレスを追加します。現在のIP範囲についてはOneSignalサポートにお問い合わせください。

### Azure SynapseとSQL Server統合の違いは何ですか？

Azure Synapseは同じSQL Server JDBCドライバーを使用しますが、分散アーキテクチャ機能が含まれており、クラウドアクセス用の特定のファイアウォール構成が必要です。
