Guia de otimização da tabela de eventos do Snowflake
O que você vai aprender
Este guia apresenta duas otimizações recomendadas do Snowflake para a tabela de eventos da Klaviyo. Essas alterações têm como objetivo reduzir varreduras amplas da tabela e ajudar o Snowflake a se concentrar nos registros de eventos e intervalos de tempo relevantes durante a sincronização.
- Ative a otimização de pesquisa para buscas de igualdade em id. Isso exige o Snowflake Enterprise Edition ou superior.
- Agrupe a tabela de eventos pela data do evento. Isso funciona em todas as edições do Snowflake e deve ser feito independentemente de você também conseguir concluir a etapa de Otimização de pesquisa.
Antes de começar
Confirme o seguinte com sua equipe de plataforma de dados:
- Se a sua conta do Snowflake estiver no Enterprise Edition ou superior, se você planeja concluir a Etapa 3 (Otimização de pesquisa). O clustering na Etapa 4 funciona em todas as edições do Snowflake e deve ser feito independentemente disso.
- Você tem permissão para alterar a tabela de eventos e ativar recursos de otimização no nível da tabela.
- Você sabe o nome totalmente qualificado da tabela de eventos do Klaviyo no seu ambiente.
- A tabela de eventos contém uma coluna id, e a coluna de carimbo de data/hora do evento se chama DATETIME ou tem um nome equivalente.
- Você tem uma janela de teste planejada, especialmente se uma sincronização histórica estiver em andamento no momento.
Os nomes das tabelas neste guia são exemplos. Substitua <EVENTS_TABLE> pelo nome exato do banco de dados, do esquema e da tabela na sua conta.
Etapa 1: identificar e validar a tabela de eventos
- Abra uma planilha do Snowflake usando uma função com as permissões necessárias.
- Confirme o identificador exato da tabela usado pela sua integração com o Klaviyo.
- Verifique se a tabela contém as colunas de pesquisa e de carimbo de data/hora esperadas.
Por exemplo:
DESCRIBE TABLE <EVENTS_TABLE>; Confirme que:
- id é o identificador do evento usado para consultas de igualdade.
- DATETIME é o carimbo de data/hora do evento ou identifique a coluna de carimbo de data/hora equivalente para usar na expressão de clustering.
Etapa 2: capturar uma linha de base (opcional)
Antes de aplicar as alterações, registre informações suficientes para comparar os resultados depois:
- Status e duração atuais da sincronização.
- Se a sincronização é histórica ou incremental.
- Warehouse do Snowflake usado pela integração.
- Créditos aproximados ou computação usados pela atividade de sincronização recente.
- Quaisquer IDs de consulta, mensagens de erro ou carimbos de data/hora relevantes do histórico de consultas do Snowflake.
Se uma sincronização histórica estiver sendo executada por um tempo anormalmente longo, coordene com a Klaviyo antes de pausá-la ou reiniciá-la.
Etapa 3: ativar a otimização de pesquisa no ID do evento (opcional)
A Otimização de pesquisa requer o Snowflake Enterprise Edition ou superior. Se sua conta estiver no Standard Edition, pule esta etapa e vá para a etapa 4 — o clustering não tem nenhum requisito de edição e deve ser feito de qualquer forma.
Execute a instrução a seguir depois de substituir o placeholder pelo nome real da sua tabela:
ALTER TABLE <EVENTS_TABLE>
ADD SEARCH OPTIMIZATION ON EQUALITY(id); Por exemplo, se a tabela se chama klaviyo_events:
ALTER TABLE klaviyo_events
ADD SEARCH OPTIMIZATION ON EQUALITY(id); Isso cria um caminho de acesso otimizado para predicados de igualdade em id, o que tem a intenção de reduzir a quantidade da tabela de eventos que o Snowflake precisa escanear em consultas direcionadas.
Se a Otimização de pesquisa já estiver ativada para id, não crie uma configuração duplicada. Em vez disso, confirme a configuração existente com seu administrador do Snowflake.
Etapa 4: Adicionar clustering com base em data à tabela de eventos
Aplique uma chave de clustering com base na parte da data do carimbo de data/hora do evento:
ALTER TABLE <EVENTS_TABLE>
CLUSTER BY (TO_DATE(DATETIME)); Por exemplo:
ALTER TABLE KLAVIYO_EVENT
CLUSTER BY (TO_DATE(DATETIME)); Use a coluna de carimbo de data/hora confirmada na Etapa 1. Se a sua coluna tiver um nome diferente, substitua essa coluna na expressão.
O agrupamento por data serve para ajudar o Snowflake a eliminar intervalos de tempo não relacionados, em vez de varrer a tabela de eventos inteira.
Etapa 5: permitir que a manutenção do Snowflake seja concluída
Após as duas instruções serem bem-sucedidas:
- Dê um tempo para o Snowflake criar ou manter as estruturas de pesquisa e clustering.
- Evite avaliar o resultado com base na primeira consulta imediatamente após as instruções DDL.
- Continue monitorando o uso do data warehouse e o desempenho das consultas enquanto a tabela estiver sendo mantida.
O tempo necessário depende do tamanho da tabela, do layout dos dados existentes e da carga de trabalho do Snowflake.
Etapa 6: notificar a Klaviyo
Envie à Klaviyo os seguintes detalhes:
- O nome totalmente qualificado da tabela de eventos.
- O registro de data e horário em que cada instrução foi aplicada.
- Confirmação de que a Otimização de pesquisa foi ativada para o id.
- Confirmação de que o agrupamento baseado em data foi aplicado.
- A conta/região do Snowflake e o warehouse usado para a sincronização.
- Qualquer ID de sincronização, ID de consulta ou detalhes de erro relevantes.
A Klaviyo vai verificar se alguma configuração do lado da exportação é necessária para aproveitar ao máximo a otimização da tabela de eventos.
Etapa 7: execute uma sincronização de validação controlada (opcional)
Quando possível, valide com uma sincronização incremental ou que seja limitada de alguma forma antes de reiniciar um grande preenchimento histórico.
Compare a nova execução com a linha de base da etapa 2:
- Hora de começar o processamento.
- Duração total da sincronização.
- Comportamento do progresso na IU do Klaviyo.
- Bytes verificados do Snowflake.
- Créditos de warehouse consumidos.
- Se a sincronização é concluída sem novas tentativas ou trabalho repetido.
O sinal mais forte é uma melhoria tanto na duração da sincronização quanto no compute do Snowflake, em vez de uma métrica isolada.
Etapa 8: monitorar as próximas sincronizações
Acompanhe várias sincronizações subsequentes em vez de depender de uma única execução. Procure por:
- Computação estável ou em queda conforme a tabela de eventos cresce.
- Menos varreduras amplas de dados históricos.
- Duração da sincronização mais previsível.
- Nenhum aumento em consultas com falha ou repetidas.
Compartilhe os resultados com a Klaviyo, incluindo os IDs de consulta antes e depois quando disponíveis.
Solução de problemas
A instrução de Otimização de pesquisa falha
Verifique se:
- A conta do Snowflake é compatível com os recursos.
- A função de execução tem permissão para alterar a tabela.
- O nome da tabela e a coluna de ID estão corretos.
- A Otimização de pesquisa ainda não está configurada para a coluna solicitada.
A instrução de clustering falha
Verifique se:
- O nome da tabela está correto.
- A coluna de carimbo de data/hora existe e é um valor de data ou carimbo de data/hora compatível.
- A função em execução pode alterar a tabela.
- A expressão de clustering corresponde ao campo de timestamp real do evento.
A sincronização ainda está lenta ou parece travada
Enviar para a Klaviyo:
- As definições exatas das tabelas e as instruções usadas.
- O horário em que cada mudança foi aplicada.
- O horário de início da sincronização e o status atual.
- IDs de consulta do Snowflake e uso do warehouse.
- Qualquer evidência de que o status da UI não está progredindo.
Não remova as otimizações apenas porque a primeira sincronização não melhora. Primeiro, confirme que a Snowflake concluiu a manutenção relevante e que a Klaviyo verificou a configuração do lado da exportação.
Checklist de conclusão
- Tabela de eventos correta identificada.
- Colunas de id e carimbo de data/hora do evento confirmadas.
- Sincronização de referência e métricas de computação registradas (opcional).
- Otimização de pesquisa ativada para pesquisas de igualdade em id (opcional).
- Tabela de eventos clusterizada por data do evento.
- Klaviyo notificado sobre as alterações.
- Sincronização de validação controlada concluída.
- Desempenho da sincronização de acompanhamento e computação revisados (opcional).