Guía de optimización de la tabla de eventos de Snowflake
Objetivos del artículo
Esta guía explica dos optimizaciones recomendadas de Snowflake para la tabla de eventos de Klaviyo. Estos cambios están pensados para reducir los escaneos amplios de tablas y ayudar a Snowflake a enfocarse en los registros de eventos y los intervalos de tiempo relevantes durante la sincronización.
- Habilita la optimización de búsqueda para búsquedas de igualdad en id. Esto requiere Snowflake Enterprise Edition o una edición superior.
- Agrupa la tabla de eventos por la fecha del evento. Esto funciona en todas las ediciones de Snowflake y se debe hacer independientemente de si también puedes completar el paso de optimización de búsqueda.
Antes de empezar
Confirma lo siguiente con el equipo de plataforma de datos:
- Ya sea que tu cuenta de Snowflake esté en la edición Enterprise o superior, si planeas completar el paso 3 (optimización de búsqueda). La agrupación en el paso 4 funciona en todas las ediciones de Snowflake y debe realizarse de cualquier modo.
- Tienes permiso para modificar la tabla de eventos y habilitar funciones de optimización a nivel de tabla.
- Conoces el nombre completo de la tabla de eventos de Klaviyo en tu entorno.
- La tabla de eventos contiene una columna id y la columna de marca de tiempo del evento se llama DATETIME o tiene un nombre equivalente.
- Tienes un período de prueba planificado, especialmente si una sincronización histórica está en curso.
Los nombres de tabla en esta guía son ejemplos. Reemplaza <EVENTS_TABLE> con el nombre exacto de la base de datos, el esquema y la tabla en la cuenta.
Paso 1: Identificar y validar la tabla de eventos
- Abre una hoja de trabajo de Snowflake con un rol que tenga los permisos requeridos.
- Confirma el identificador exacto de la tabla que usa tu integración de Klaviyo.
- Verifica que la tabla contenga las columnas esperadas de búsqueda y marca de tiempo.
Por ejemplo:
DESCRIBE TABLE <EVENTS_TABLE>; Confirma que:
- id es el identificador del evento que se usa para búsquedas de igualdad.
- DATETIME es la marca de tiempo del evento, o identifica la columna de marca de tiempo equivalente que se usará en la expresión de clustering.
Paso 2: Captura una línea base (opcional)
Antes de aplicar los cambios, registra suficiente información para comparar los resultados después:
- Estado y duración actuales de la sincronización.
- Si la sincronización es histórica o incremental.
- Almacén de Snowflake usado por las integraciones.
- Créditos aproximados o capacidad de cómputo utilizada por la actividad de sincronización reciente.
- Cualquier ID de consulta relevante, mensaje de error o marca de tiempo de Snowflake Query History.
Si una sincronización histórica se está ejecutando durante un tiempo inusualmente largo, coordina con Klaviyo antes de pausarla o reiniciarla.
Paso 3: Habilitar Search Optimization en el ID de evento (opcional)
La optimización de búsqueda requiere Snowflake Enterprise Edition o una superior. Si la cuenta está en Standard Edition, omite este paso y ve al paso 4: la agrupación en clústeres no tiene requisitos de edición y debe realizarse de todos modos.
Ejecuta la siguiente instrucción después de reemplazar el marcador de posición con el nombre real de la tabla:
ALTER TABLE <EVENTS_TABLE>
ADD SEARCH OPTIMIZATION ON EQUALITY(id); Por ejemplo, si la tabla se llama klaviyo_events:
ALTER TABLE klaviyo_events
ADD SEARCH OPTIMIZATION ON EQUALITY(id); Esto crea una ruta de acceso optimizada para predicados de igualdad en id, lo cual está diseñado para reducir la cantidad de la tabla events que Snowflake debe escanear para búsquedas dirigidas.
Si la optimización de búsqueda ya está habilitada para id, no crees una configuración duplicada. En su lugar, confirma la configuración existente con tu administrador de Snowflake.
Paso 4: agregar agrupación basada en fechas a la tabla de eventos
Aplica una clave de agrupación basada en la parte de fecha de la marca de tiempo del evento:
ALTER TABLE <EVENTS_TABLE>
CLUSTER BY (TO_DATE(DATETIME)); Por ejemplo:
ALTER TABLE KLAVIYO_EVENT
CLUSTER BY (TO_DATE(DATETIME)); Usa la columna de marca de tiempo confirmada en el paso 1. Si la columna tiene un nombre diferente, sustituye esa columna en la expresión.
El clustering basado en fechas está diseñado para ayudar a Snowflake a eliminar rangos de tiempo no relacionados, en lugar de escanear la tabla completa de eventos.
Paso 5: Permitir que finalice el mantenimiento de Snowflake
Después de que ambas declaraciones se completen correctamente:
- Dale tiempo a Snowflake para crear o mantener las estructuras de búsqueda y clustering.
- Evita juzgar el resultado de la primera consulta inmediatamente después de las sentencias DDL.
- Continúa monitoreando el uso del almacén y el rendimiento de las consultas mientras se realiza el mantenimiento de la tabla.
El tiempo requerido depende del tamaño de la tabla, el diseño de datos existente y la carga de trabajo de Snowflake.
Paso 6: Notificar a Klaviyo
Envía a Klaviyo los siguientes detalles:
- El nombre totalmente calificado de la tabla de eventos.
- La marca de tiempo en la que se aplicó cada declaración.
- Confirmación de que se habilitó la optimización de búsqueda para el id.
- Confirmación de que se aplicó la agrupación en clústeres basada en fechas.
- La cuenta/región de Snowflake y el almacén usados para la sincronización.
- Cualquier ID de sincronización, ID de consulta o detalles de error relevantes.
Klaviyo verificará si se requiere alguna configuración del lado de exportación para aprovechar al máximo la optimización de la tabla de eventos.
Paso 7: Ejecuta una sincronización de validación controlada (opcional)
Cuando sea posible, valida con una sincronización incremental o limitada antes de reiniciar un relleno histórico grande.
Compara la nueva ejecución con la línea base del paso 2:
- Tiempo para empezar a procesar.
- Duración total de la sincronización.
- Comportamiento del progreso en la IU de Klaviyo.
- Bytes escaneados de Snowflake.
- Créditos de Warehouse consumidos.
- Si la sincronización se completa sin reintentos ni trabajo repetido.
La señal más sólida es una mejora tanto en la duración de la sincronización como en el cómputo de Snowflake, en lugar de una métrica de forma aislada.
Paso 8: Monitorea las próximas sincronizaciones
Haz seguimiento de varias sincronizaciones posteriores en lugar de depender de una sola ejecución. Busca:
- Capacidad de cómputo estable o en disminución a medida que crece la tabla de eventos.
- Menos análisis amplios de datos históricos.
- Duración de sincronización más predecible.
- Sin aumento en las consultas fallidas o repetidas.
Comparte los resultados con Klaviyo, incluidos los ID de consulta de antes y después cuando estén disponibles.
Guía de solución de problemas
La declaración de optimización de búsqueda falla
Verifica que:
- La cuenta de Snowflake es compatible con las funciones.
- El rol de ejecución tiene permiso para modificar la tabla.
- El nombre de la tabla y la columna de ID son correctos.
- La optimización de búsqueda aún no está configurada para la columna solicitada.
La instrucción de agrupamiento falla
Verifica que:
- El nombre de la tabla es correcto.
- La columna de marca de tiempo existe y es un valor de marca de tiempo o de fecha compatible.
- El rol de ejecución puede modificar la tabla.
- La expresión de clustering coincide con el campo real de marca de tiempo del evento.
La sincronización sigue siendo lenta o parece estar atascada
Enviar Klaviyo:
- Las definiciones exactas de las tablas y las instrucciones utilizadas.
- La hora en que se aplicó cada cambio.
- La hora de inicio de la sincronización y el estado actual.
- IDs de consulta de Snowflake y uso del almacén.
- Cualquier evidencia de que el estado en la IU no avanza.
No quites las optimizaciones solo porque la primera sincronización no mejora. Primero, confirma que Snowflake haya completado el mantenimiento relevante y que Klaviyo haya verificado la configuración del lado de exportación.
Lista de verificación de finalización
- Se identificó la tabla de eventos correcta.
- Columnas de id y de marca de tiempo del evento confirmadas.
- Sincronización de línea base y métricas de cómputo registradas (opcional).
- Optimización de búsqueda habilitada para búsquedas de igualdad en id (opcional).
- Tabla de eventos agrupada por fecha del evento.
- Klaviyo recibió la notificación de los cambios.
- Sincronización de validación controlada completada.
- Hacer seguimiento del rendimiento de la sincronización y calcular revisado (opcional).