Guía de optimización de tablas de eventos de Snowflake
Qué aprenderás
Aprende a aplicar 2 optimizaciones recomendadas de Snowflake a la tabla de eventos exportada desde Klaviyo. Estos cambios están pensados para reducir escaneos de tablas amplios y ayudar a Snowflake a centrarse en los registros de eventos y los rangos 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:
- Tienes configurado un destino de Snowflake para exportar eventos de Klaviyo. Para consultar las instrucciones de configuración, lee La sincronización del almacén de datos en Klaviyo.
- 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.
- Tu rol tiene OWNERSHIP en la tabla de eventos y USAGE u OWNERSHIP en su base de datos y esquema. Si habilitas Search Optimization, tu rol también necesita ADD SEARCH OPTIMIZATION en el esquema.
- 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. Reemplaza <EVENTS_TABLE> por el nombre exacto de base de datos, esquema y tabla en tu cuenta. Reemplaza <EVENTS_SCHEMA> por la base de datos y el esquema que contienen esa tabla; por ejemplo, MY_DATABASE.PUBLIC.
Revisa los costes de Snowflake con el equipo de plataforma de datos antes de aplicar estos cambios. Search Optimization y Automatic Clustering pueden añadir cargos de configuración y de mantenimiento continuo, así como costes de almacenamiento. Consulta los costes de Search Optimization y los costes de clustering, especialmente antes de optimizar una tabla grande.
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).
Antes de activar la optimización de búsqueda, revisa la configuración existente:
DESCRIBE SEARCH OPTIMIZATION ON <EVENTS_TABLE>;Si el resultado incluye una entrada EQUALITY activa para id, mantén la configuración existente y omite las sentencias ALTER TABLE en este paso. De lo contrario, confirma la configuración con el administrador de Snowflake antes de añadirla.
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.
Paso 4: añade la agrupación en clústeres basada en la fecha a la tabla de eventos
Antes de configurar la clave de clúster, ejecuta el siguiente comando y busca la tabla de eventos en el resultado:
SHOW TABLES IN SCHEMA <EVENTS_SCHEMA>;Revisa cluster_by. Si ya especifica TO_DATE() en la columna de marca de tiempo del evento, conserva esa clave y omite las instrucciones ALTER TABLE en este paso. Si especifica una clave distinta, revisa primero el cambio con el equipo de plataforma de datos: CLUSTER BY sustituye la clave existente.
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.
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));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 las sentencias que ejecutaste se completen correctamente o de que hayas confirmado que la configuración necesaria ya está implementada:
- 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, los cargos de mantenimiento de la optimización y el rendimiento de las consultas mientras se mantiene 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.
Antes de comparar el rendimiento de la sincronización, ejecuta SHOW TABLES de nuevo y comprueba la fila de la tabla de eventos:
SHOW TABLES IN SCHEMA <EVENTS_SCHEMA>;- Si Search Optimization está activado, confirma que search_optimization esté ON y que search_optimization_progress haya alcanzado 100 antes de evaluar su rendimiento.
- Confirma que cluster_by muestra la expresión de fecha esperada y que automatic_clustering está ACTIVADO. Si está en OFF, pide a tu administrador de Snowflake que reanude Automatic Clustering. La configuración ON indica que el mantenimiento está habilitado, no que la reclasificación inicial haya finalizado. Pide a tu administrador que compruebe la actividad de reclasificación antes de comparar los resultados.
Paso 6: Notificar a Klaviyo
Envía a Klaviyo los siguientes detalles:
- El nombre completo de la tabla de eventos.
- Qué declaraciones ejecutaste y cuándo, o qué ajustes ya estaban configurados.
- Si la optimización de búsqueda está habilitada para el ID o si se omitió el paso 3.
- Confirmación de que el agrupamiento basado en fechas está configurado en la columna de marca de tiempo del evento.
- 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.
Pide a Klaviyo que confirme si la exportación de eventos requiere un cambio de configuración para usar la concordancia basada en fechas con la columna de marca de tiempo agrupada.
Paso 7: ejecutar una sincronización de validación controlada (opcional)
Coordina una ejecución de validación controlada con Klaviyo. Cuando sea posible, valida con una sincronización incremental o limitada de algún modo antes de reiniciar un backfill histórico grande.
Si capturaste una referencia en el paso 2, compara las ejecuciones con volúmenes de datos similares usando el mismo almacén de datos. Revisar:
- 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 de Snowflake consumidos, incluidos el uso del almacén y los cargos de mantenimiento de optimización.
- Si la sincronización se completa sin reintentos ni trabajo repetido.
Evalúa conjuntamente la duración de la sincronización, los bytes analizados y los costes totales de Snowflake. Reducir el uso del almacén por sí solo no supone un ahorro de costes si aumentan los costes de mantenimiento de la optimización o de almacenamiento.
Paso 8: Supervisar las siguientes sincronizaciones
Realiza el seguimiento de varias sincronizaciones posteriores en lugar de depender de una sola ejecución. Busca:
- Costes de Snowflake estables o a la baja para volúmenes de datos comparables, incluidos los cargos de mantenimiento y almacenamiento.
- 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 está en la edición Enterprise o superior.
- El rol de ejecución tiene OWNERSHIP sobre la tabla.
- El nombre de la tabla y la columna id son correctos.
- El rol de ejecución tiene ADD SEARCH OPTIMIZATION en el esquema que contiene la tabla.
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 tiene OWNERSHIP en la tabla y USAGE u OWNERSHIP en su base de datos y esquema.
- 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.
- Sincronización de validación controlada completada (opcional).
- Rendimiento de sincronización posterior y cómputo revisados (opcional).