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

> Sincronice eventos personalizados desde Azure Synapse a OneSignal para activar Journeys automatizados y campañas de mensajería personalizadas basadas en el comportamiento del usuario.

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"

## Descripción general

La integración de OneSignal + Azure Synapse permite sincronizar eventos personalizados desde su espacio de trabajo de Azure Synapse Analytics a OneSignal para activar campañas de mensajería automatizadas y Journeys basados en el comportamiento del usuario.

Azure Synapse Analytics es el servicio de análisis basado en la nube de Microsoft que combina integración de datos, almacenamiento de datos y análisis.

***

## Requisitos

* 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

* **Espacio de trabajo de Azure Synapse** con acceso a SQL pool
* **Usuario de base de datos** con permisos apropiados
* **Tablas de eventos** que contengan datos de comportamiento estructurados
* **Acceso de firewall** para direcciones IP de OneSignal

***

## Configuración

<Steps>
  <Step title="Crear inicio de sesión dedicado para OneSignal">
    Cree un inicio de sesión dedicado y una cuenta de usuario con una contraseña fuerte y única:

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

    -- Crear inicio de sesión census con la capacidad de iniciar sesión con una contraseña
    CREATE LOGIN CENSUS WITH PASSWORD = '<strong-unique-password>';

    -- Crear usuario para el inicio de sesión
    CREATE USER CENSUS FOR LOGIN CENSUS;

    -- Dar al usuario census la capacidad de conectarse a la base de datos
    GRANT CONNECT TO CENSUS;
    ```

    <Info>
      Reemplace `<your-database>` con el nombre real de su base de datos que contiene datos de eventos.
    </Info>
  </Step>

  <Step title="Otorgar permisos de lectura">
    Proporcione acceso de solo lectura a sus datos de eventos:

    ```sql theme={null}
    -- Dar al usuario census la capacidad de leer todas las tablas
    EXEC sp_addrolemember 'db_datareader', CENSUS;

    -- Otorgar al usuario census capacidad de leer esquema y datos
    -- Ejecute esto para cada esquema al que pretende que OneSignal acceda
    GRANT SELECT, VIEW DEFINITION ON SCHEMA::<your-schema> TO CENSUS;
    ```

    <Info>
      Reemplace `<your-schema>` con el nombre real de su esquema que contiene datos de eventos. Repita este comando para cada esquema al que desea que OneSignal acceda.
    </Info>
  </Step>

  <Step title="Configurar acceso de firewall">
    Configure el firewall de Azure Synapse para permitir direcciones IP de OneSignal.

    Use el portal de administración de Windows Azure o ejecute **sp\_set\_firewall\_rule** en la base de datos principal:

    ```sql theme={null}
    -- Ejemplo: Agregar regla de firewall para rango de IP de OneSignal
    EXEC sp_set_firewall_rule
        N'OneSignal Access',
        'ONESIGNAL_IP_START',
        'ONESIGNAL_IP_END';
    ```

    <Warning>
      Contacte al soporte de OneSignal para conocer los rangos de direcciones IP actuales para su región.
    </Warning>
  </Step>

  <Step title="Conectar a OneSignal">
    In OneSignal, go to **Data > Integrations** and click **Add Integration**.

    Seleccione **Azure Synapse** y proporcione los siguientes detalles de conexión:

    * **Host:** El nombre de host de su endpoint SQL de Synapse
    * **Port:** 1433 (predeterminado)
    * **Database:** El nombre de su base de datos
    * **Username:** `CENSUS`
    * **Password:** La contraseña del Paso 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       |

### Esquema de tabla de eventos de ejemplo

```sql theme={null}
-- Ejemplo de tabla de eventos de 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);
```

### Modo de consulta SQL

Escriba consultas SQL personalizadas para transformar sus datos de eventos:

```sql theme={null}
-- Ejemplo: Eventos recientes de alto valor
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;
```

***

## Características específicas de Azure

### Arquitectura distribuida

* Eventos distribuidos por `user_id` para rendimiento óptimo de consultas
* Índices de columnstore agrupados para cargas de trabajo de análisis
* Procesamiento masivamente paralelo (MPP) para datos de eventos a gran escala

### Integración con el ecosistema de Azure

* Conéctese a Azure Data Factory para pipelines de eventos automatizados
* Integre con Azure Event Hubs para streaming de eventos en tiempo real
* Aproveche Azure Active Directory para autenticación

***

## Configuración de red avanzada

OneSignal puede conectarse exitosamente a instancias de Azure Synapse que están usando controles de red avanzados que incluyen restricciones de región, listas de permitidos de direcciones IP o tunelización SSH.

Para obtener más información sobre la configuración del acceso a la red, contacte a su administrador de Azure Synapse o al soporte de OneSignal.

***

## Limitaciones

* Basado en el protocolo de conexión del controlador JDBC de SQL Server
* Requiere reglas de firewall explícitas para direcciones IP de OneSignal
* Las consultas complejas pueden afectar el rendimiento y los costos del SQL pool
* Las operaciones JSON requieren indexación cuidadosa para un rendimiento óptimo

***

## Preguntas frecuentes

### ¿Puedo conectarme a múltiples esquemas de Azure Synapse?

Sí, puede otorgar al usuario CENSUS acceso a múltiples esquemas ejecutando la declaración `GRANT SELECT, VIEW DEFINITION ON SCHEMA::<schema>` para cada esquema que contiene datos de eventos.

### ¿Cómo configuro el acceso de firewall para OneSignal?

Use el portal de administración de Azure o `sp_set_firewall_rule` para agregar las direcciones IP de OneSignal. Contacte al soporte de OneSignal para conocer los rangos de IP actuales.

### ¿Cuál es la diferencia entre la integración de Azure Synapse y SQL Server?

Azure Synapse usa el mismo controlador JDBC de SQL Server pero incluye características de arquitectura distribuida y requiere configuración de firewall específica para acceso a la nube.
