Saltar al contenido principal

Descripción general

La integración de OneSignal + Amazon Redshift habilita la sincronización de eventos personalizados desde su almacén de datos Redshift a OneSignal para activar campañas de mensajería automatizadas y Journeys basados en el comportamiento del usuario. Amazon Redshift es un servicio de almacén de datos completamente administrado y a escala de petabytes que hace que sea rentable analizar grandes volúmenes de datos usando sus herramientas de inteligencia empresarial existentes.

Requisitos

Amazon Redshift

  • Clúster de Redshift con acceso de red
  • Usuario de base de datos con permisos apropiados
  • Tablas de eventos que contengan datos de comportamiento estructurados
  • Conectividad de red desde OneSignal a su clúster de Redshift

Configuración

1

Crear usuario dedicado para OneSignal

Cree una cuenta de usuario dedicada con permisos apropiados:
-- Crear usuario de OneSignal con contraseña fuerte
CREATE USER CENSUS WITH PASSWORD '<contraseña-fuerte-única>';

-- Crear esquema privado de contabilidad para el estado de sincronización (omitir si modo de solo lectura)
CREATE SCHEMA CENSUS;

-- Otorgar acceso completo al esquema de contabilidad (omitir si modo de solo lectura)
GRANT ALL ON SCHEMA CENSUS TO CENSUS;

-- Asegurar acceso a objetos existentes en el esquema de contabilidad (omitir si modo de solo lectura)
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA CENSUS TO CENSUS;
2

Otorgar permisos a datos de eventos

Proporcione acceso de lectura a esquemas que contengan sus datos de eventos:
-- Otorgar acceso al esquema (repetir para cada esquema con datos de eventos)
GRANT USAGE ON SCHEMA "<your_schema>" TO CENSUS;

-- Otorgar acceso de lectura a tablas existentes
GRANT SELECT ON ALL TABLES IN SCHEMA "<your_schema>" TO CENSUS;

-- Otorgar acceso de lectura a tablas futuras
ALTER DEFAULT PRIVILEGES IN SCHEMA "<your_schema>" GRANT SELECT ON TABLES TO CENSUS;

-- Otorgar permisos de ejecución en funciones
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA "<your_schema>" TO CENSUS;
ALTER DEFAULT PRIVILEGES IN SCHEMA "<your_schema>" GRANT EXECUTE ON FUNCTIONS TO CENSUS;
3

Configurar acceso de red

Agregue las direcciones IP de OneSignal a sus grupos de seguridad de Redshift. Redshift previene el acceso externo por defecto.Puede encontrar las direcciones IP de OneSignal para su región en la configuración de integración. Para obtener más información, visite el Centro de ayuda de AWS Redshift.
4

Conectar a OneSignal

In OneSignal, go to Data > Integrations and click Add Integration.
  1. Seleccione Amazon Redshift de la lista
  2. Ingrese sus detalles de conexión:
    • Host: Su endpoint de clúster Redshift
    • Port: Usualmente 5439
    • Database: Nombre de su base de datos
    • Username: CENSUS
    • Password: La contraseña que creó
  3. Pruebe la conexión
  4. Configure qué tablas contienen sus datos de eventos

Event data mapping

Map your to OneSignal’s custom events format:
OneSignal FieldDescriptionRequired
nameevent_nameEvent identifierYes
external_iduser_idUser identifierYes
timestampevent_timestampWhen event occurredNo
propertiesevent_dataNo

Esquema de tabla de eventos de ejemplo

-- Tabla de eventos de Redshift de ejemplo
CREATE TABLE analytics.user_events (
    event_id BIGINT IDENTITY(1,1),
    event_name VARCHAR(100) NOT NULL,
    user_id VARCHAR(255) NOT NULL,
    event_timestamp TIMESTAMP DEFAULT GETDATE(),
    event_data SUPER,
    session_id VARCHAR(255),
    created_at TIMESTAMP DEFAULT GETDATE()
)
DISTKEY(user_id)
SORTKEY(event_timestamp);

Modo de consulta SQL

Escriba consultas SQL personalizadas para transformar sus datos de eventos:
-- 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, GETDATE())
    AND JSON_EXTRACT_PATH_TEXT(event_data, 'value')::NUMERIC > 100
ORDER BY event_timestamp DESC;

Integración con dbt

Si está usando dbt con Redshift, asegúrese de que OneSignal retenga el acceso después de cada ejecución de dbt:

Opción 1: Permisos detallados

Agregue post-hooks en su proyecto dbt para otorgar acceso después de que cada modelo se construya:
-- En su modelo dbt
{{ config(
    post_hook="GRANT SELECT ON {{ this }} TO CENSUS"
) }}

Opción 2: Privilegios predeterminados (Recomendado)

Otorgue permisos predeterminados para su usuario de producción de dbt:
-- Debe ser ejecutado por el superusuario de Redshift
ALTER DEFAULT PRIVILEGES FOR USER "<your_dbt_run_user>"
IN SCHEMA "<your_dbt_target_schema>"
GRANT SELECT ON TABLES TO CENSUS;

Configuración de red avanzada

Configuración de túnel SSH

Para clústeres de Redshift en redes privadas:
  1. Crear usuario SSH: Configure un usuario dedicado en su host SSH
  2. Configurar túnel: Habilite “Use SSH Tunnel” en la configuración de integración de OneSignal
  3. Instalar par de claves: Agregue la clave pública de OneSignal a ~/.ssh/authorized_keys
  4. Probar conexión: Verifique la conectividad del túnel

Implementación de VPC

Para Redshift dentro de AWS VPC: OneSignal usa el comando UNLOAD para la extracción eficiente de datos masivos. Las implementaciones de VPC requieren un S3 VPC Endpoint para permitir que Redshift se comunique con S3. Configurar S3 VPC Endpoint:
  1. Navegue al servicio VPC en la consola de AWS
  2. Cree un VPC Endpoint para el servicio S3
  3. Asocie con su subred de Redshift
  4. Configure las tablas de enrutamiento

Optimización de rendimiento

Claves de distribución y ordenamiento

Optimice sus tablas de eventos para cargas de trabajo analíticas:
-- Distribuir por user_id para consultas centradas en el usuario
CREATE TABLE analytics.user_events (
    -- columnas
)
DISTKEY(user_id)
SORTKEY(event_timestamp, event_name);

Almacenamiento columnar

Aproveche el almacenamiento columnar de Redshift para análisis:
  • Compresión: Redshift comprime automáticamente las columnas
  • Mapas de zona: Mejore el rendimiento de consultas con datos ordenados
  • Orientado a columnas: Eficiente para consultas analíticas en datos de eventos

Limitaciones

  • Múltiples esquemas requieren otorgamientos de permisos separados
  • Las vistas que hacen referencia a tablas de esquema cruzado necesitan permisos adicionales
  • El acceso a procedimientos almacenados complejos puede requerir configuración adicional
  • Las implementaciones de VPC requieren configuración de S3 VPC Endpoint

Preguntas frecuentes

¿Cómo maneja OneSignal grandes conjuntos de datos de eventos?

OneSignal usa el comando UNLOAD de Redshift para la extracción eficiente de datos masivos, que está optimizado para cargas de trabajo analíticas a gran escala.

¿Puedo usar el modo de solo lectura?

Sí, puede omitir la creación del esquema de contabilidad y usar el modo de solo lectura si prefiere una configuración más simple y no puede permitir que OneSignal cree tablas.

¿Qué hay de la compatibilidad con dbt?

OneSignal proporciona patrones de integración de dbt específicos para garantizar que los permisos se mantengan después de las ejecuciones de dbt. Use post-hooks o privilegios predeterminados según su configuración.