Guía de optimización de tablas de eventos de Snowflake
Qué aprenderás
Esta guía repasa 2 optimizaciones de Snowflake recomendadas para la tabla de eventos de Klaviyo. Estos cambios tienen como objetivo reducir los escaneos amplios de tablas y ayudar a Snowflake a centrarse 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 el id. Esto requiere Snowflake Enterprise Edition o superior.
- Agrupa en clústeres la tabla de eventos por la fecha del evento. Esto funciona en todas las ediciones de Snowflake y debe hacerse 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:
- Independientemente de si tu cuenta de Snowflake está en Enterprise Edition o superior, si tienes previsto completar el paso 3 (optimización de búsqueda). La agrupación en clústeres del paso 4 funciona en todas las ediciones de Snowflake y debe hacerse de todos modos.
- Tienes permiso para modificar la tabla de eventos y habilitar funciones de optimización a nivel de tabla.
- Sabes el nombre completo de la tabla de eventos de Klaviyo en tu entorno.
- La tabla de eventos contiene una columna de id, y la columna de marca de tiempo del evento se llama DATETIME o tiene un nombre equivalente.
- Tienes una ventana de prueba planificada, especialmente si actualmente se está ejecutando una sincronización histórica.
Los nombres de las tablas de esta guía son ejemplos. Sustituye <EVENTS_TABLE> por el nombre exacto de la base de datos, el esquema y la tabla de tu cuenta.
Paso 1: identificar y validar la tabla de eventos
- Abre una hoja de trabajo de Snowflake con un rol que tenga los permisos necesarios.
- Confirma el identificador exacto de la tabla que utiliza la integración de Klaviyo.
- Comprueba que la tabla contiene las columnas de búsqueda y marca de tiempo esperadas.
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 debe usar en la expresión de agrupación.
Paso 2: capturar una referencia (opcional)
Antes de aplicar los cambios, registra suficiente información para poder comparar los resultados más adelante:
- Estado y duración de la sincronización actuales.
- Si la sincronización es histórica o incremental.
- Almacén de Snowflake utilizado por las integraciones.
- Créditos aproximados o cálculo usados por la actividad de sincronización reciente.
- Cualquier ID de consulta, mensaje de error o marca de tiempo relevante del historial de consultas de Snowflake.
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 la optimización de búsqueda en el ID del evento (opcional)
La optimización de búsqueda requiere Snowflake Enterprise Edition o una versión superior. Si la cuenta está en Standard Edition, sáltate este paso y ve al paso 4 (la agrupación en clústeres no tiene ningún requisito de edición y debe hacerse independientemente).
Ejecuta la siguiente instrucción después de sustituir el marcador de posición por 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, cuyo objetivo es reducir la cantidad de la tabla events que Snowflake debe escanear para búsquedas específicas.
Si Search Optimization ya está habilitado para el id, no crees una configuración duplicada. En su lugar, confirma la configuración existente con el administrador de Snowflake.
Paso 4: añade la agrupación en clústeres basada en la fecha a la tabla de eventos
Aplicar una clave de clustering 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.
La agrupación en clústeres basada en fechas está pensada para ayudar a Snowflake a descartar rangos de tiempo no relacionados en lugar de escanear toda la tabla de eventos.
Paso 5: permite que se complete el mantenimiento de Snowflake
Después de que ambas sentencias se ejecuten correctamente:
- Permite que Snowflake tenga tiempo para crear o mantener las estructuras de búsqueda y clustering.
- Evita evaluar el resultado a partir de la primera consulta inmediatamente después de las instrucciones DDL.
- Sigue monitorizando el uso del almacén y el rendimiento de las consultas mientras se realiza el mantenimiento de la tabla.
La cantidad de tiempo necesaria depende del tamaño de la tabla, el diseño de los datos existentes y la carga de trabajo de Snowflake.
Paso 6: Notificar a Klaviyo
Envía a Klaviyo los siguientes detalles:
- El nombre completo de la tabla de eventos.
- La marca de tiempo en la que se aplicó cada declaración.
- Confirmación de que se habilitó Search Optimization para el id.
- Confirmación de que se aplicó la agrupación en clústeres basada en la fecha.
- La cuenta/región de Snowflake y el almacén utilizados para la sincronización.
- Cualquier ID de sincronización, ID de consulta o detalle del error pertinente.
Klaviyo verificará si se necesita alguna configuración del lado de la exportación para aprovechar al máximo la optimización de la tabla de eventos.
Paso 7: ejecutar una sincronización de validación controlada (opcional)
Cuando sea posible, valida con una sincronización incremental o que tenga limitaciones antes de reiniciar un relleno histórico de gran tamaño.
Comparar la nueva ejecución con la referencia del Paso 2:
- Es hora de empezar a procesar.
- Duración total de la sincronización.
- Comportamiento de progreso en la interfaz de usuario de Klaviyo.
- Bytes analizados de Snowflake.
- Créditos del almacén 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 uso de computación de Snowflake, en lugar de una sola métrica de forma aislada.
Paso 8: Supervisar las siguientes sincronizaciones
Realiza el seguimiento de varias sincronizaciones posteriores en lugar de depender de una sola ejecución. Busca:
- Cálculo estable o en descenso a medida que crece la tabla de eventos.
- Menos análisis amplios del histórico de datos.
- Duración de sincronización más predecible.
- Sin aumento de consultas fallidas o repetidas.
Comparte los resultados con Klaviyo, incluidos los ID de consulta de antes y después cuando estén disponibles.
Solución de problemas
La instrucción de optimización de búsqueda falla
Comprueba que:
- La cuenta de Snowflake admite la función.
- El rol de ejecución tiene permiso para modificar la tabla.
- El nombre de la tabla y la columna id son correctos.
- Search Optimization aún no está configurado para la columna solicitada.
La instrucción de clustering falla
Comprueba 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 agrupación coincide con el campo de marca de tiempo real del evento.
La sincronización sigue siendo lenta o parece estar atascada
Enviar a Klaviyo:
- Las definiciones exactas de las tablas y las sentencias utilizadas.
- La hora a la que se aplicó cada cambio.
- La hora de inicio de la sincronización y el estado actual.
- ID de consultas de Snowflake y uso del almacén.
- Cualquier evidencia de que el estado de la IU no avanza.
No elimines las optimizaciones solo porque la primera sincronización no mejore. Primero, confirma que Snowflake haya completado el mantenimiento pertinente y que Klaviyo haya verificado su configuración del lado de exportación.
Lista de comprobación de finalización
- Tabla de eventos correcta identificada.
- Columnas de id y marca de tiempo del evento confirmadas.
- Sincronización de referencia y métricas de cálculo 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.
- La sincronización de validación controlada se completó.
- Rendimiento de sincronización posterior y cómputo revisados (opcional).