Guida all’ottimizzazione della tabella eventi di Snowflake
Cosa imparerai
Questa guida illustra due ottimizzazioni Snowflake consigliate per la tabella degli eventi Klaviyo. Queste modifiche sono pensate per ridurre le scansioni estese della tabella e aiutare Snowflake a concentrarsi sui record degli eventi e sugli intervalli di tempo pertinenti durante la sincronizzazione.
- Abilita l'ottimizzazione della ricerca per le ricerche di uguaglianza su id. Questo richiede Snowflake Enterprise Edition o versione successiva.
- Raggruppa la tabella degli eventi per data dell’evento. Funziona su tutte le edizioni di Snowflake e va fatto indipendentemente dal fatto che tu possa anche completare il passaggio di ottimizzazione della ricerca.
Prima di iniziare
Conferma quanto segue con il team della piattaforma dati:
- Indipendentemente dal fatto che il tuo account Snowflake sia su Enterprise Edition o versione successiva, se prevedi di completare il passaggio 3 (ottimizzazione della ricerca). Il clustering nel passaggio 4 funziona su tutte le edizioni di Snowflake e deve essere eseguito in ogni caso.
- Hai l’autorizzazione a modificare la tabella degli eventi e ad abilitare funzionalità di ottimizzazione a livello di tabella.
- Conosci il nome completo della tabella degli eventi di Klaviyo nel tuo ambiente.
- La tabella degli eventi contiene una colonna id e la colonna del timestamp dell'evento si chiama DATETIME o ha un nome equivalente.
- Hai una finestra di test pianificata, soprattutto se è attualmente in esecuzione una sincronizzazione storica.
I nomi delle tabelle in questa guida sono esempi. Sostituisci <EVENTS_TABLE> con il nome esatto di database, schema e tabella del tuo account.
Passaggio 1: identifica e convalida la tabella degli eventi
- Apri un foglio di lavoro Snowflake usando un ruolo con le autorizzazioni richieste.
- Conferma l'identificatore esatto della tabella usato dalle integrazioni Klaviyo.
- Verifica che la tabella contenga le colonne di ricerca e timestamp previste.
Per esempio:
DESCRIBE TABLE <EVENTS_TABLE>; Conferma che:
- id è l'identificatore dell'evento usato per le ricerche di uguaglianza.
- DATETIME è il timestamp dell’evento oppure identifica la colonna del timestamp equivalente da usare nell’espressione di clustering.
Passaggio 2: acquisisci un riferimento (facoltativo)
Prima di applicare le modifiche, registra informazioni sufficienti per confrontare i risultati in seguito:
- Stato e durata della sincronizzazione attuali.
- Se la sincronizzazione è cronologica o incrementale.
- Warehouse Snowflake utilizzato dall'integrazione.
- Crediti approssimativi o calcolo utilizzato dalla recente attività di sincronizzazione.
- Tutti gli ID query, i messaggi di errore o i timestamp pertinenti da Snowflake Query History.
Se è in corso una sincronizzazione storica per un periodo insolitamente lungo, coordinati con Klaviyo prima di metterla in pausa o riavviarla.
Passaggio 3: abilita l'ottimizzazione della ricerca sull'ID evento (facoltativo)
L’ottimizzazione della ricerca richiede Snowflake Enterprise Edition o versione successiva. Se il tuo account è su Standard Edition, salta questo passaggio e vai al passaggio 4: il clustering non ha requisiti di edizione e va eseguito comunque.
Esegui la seguente istruzione dopo aver sostituito il segnaposto con il nome effettivo della tabella:
ALTER TABLE <EVENTS_TABLE>
ADD SEARCH OPTIMIZATION ON EQUALITY(id); Ad esempio, se la tabella si chiama klaviyo_events:
ALTER TABLE klaviyo_events
ADD SEARCH OPTIMIZATION ON EQUALITY(id); Questo crea un percorso di accesso ottimizzato per i predicati di uguaglianza su id, pensato per ridurre la quantità di dati della tabella degli eventi che Snowflake deve scansionare per ricerche mirate.
Se Search Optimization è già abilitata per l'ID, non creare una configurazione duplicata. Conferma invece la configurazione esistente con l'amministratore Snowflake.
Passaggio 4: aggiungi un clustering basato sulla data alla tabella degli eventi
Applica una chiave di clustering basata sulla parte relativa alla data del timestamp dell'evento:
ALTER TABLE <EVENTS_TABLE>
CLUSTER BY (TO_DATE(DATETIME)); Per esempio:
ALTER TABLE KLAVIYO_EVENT
CLUSTER BY (TO_DATE(DATETIME)); Usa la colonna timestamp confermata nel passaggio 1. Se la colonna ha un nome diverso, sostituisci quella colonna nell'espressione.
Il clustering basato sulla data serve ad aiutare Snowflake a eliminare gli intervalli di tempo non correlati, invece di eseguire la scansione dell'intera tabella degli eventi.
Passaggio 5: consenti il completamento della manutenzione di Snowflake
Dopo che entrambe le istruzioni vanno a buon fine:
- Consenti a Snowflake il tempo necessario per creare o mantenere le strutture di ricerca e clustering.
- Evita di giudicare il risultato in base alla prima query subito dopo le istruzioni DDL.
- Continua a monitorare l'utilizzo del data warehouse e le prestazioni delle query mentre la tabella viene mantenuta.
Il tempo necessario dipende dalle dimensioni della tabella, dal layout dei dati esistente e dal carico di lavoro di Snowflake.
Passaggio 6: avvisa Klaviyo
Invia a Klaviyo i seguenti dettagli:
- Il nome completo e qualificato della tabella degli eventi.
- Il timestamp in cui è stata applicata ogni istruzione.
- Conferma che Search Optimization è stato abilitato per l'id.
- Conferma che è stato applicato il clustering basato sulla data.
- L’account/regione Snowflake e il warehouse usato per la sincronizzazione.
- Qualsiasi ID di sincronizzazione, ID di query o dettagli dell’errore pertinenti.
Klaviyo verificherà se è necessaria una configurazione lato esportazione per sfruttare appieno l'ottimizzazione della tabella degli eventi.
Passaggio 7: esegui una sincronizzazione di convalida controllata (facoltativo)
Quando possibile, convalida con una sincronizzazione incrementale o altrimenti limitata prima di riavviare un backfill storico di grandi dimensioni.
Confronta la nuova esecuzione con il riferimento del passaggio 2:
- Ora di inizio dell’elaborazione.
- Durata totale della sincronizzazione.
- Comportamento dell'avanzamento nell'interfaccia utente di Klaviyo.
- Byte scansionati di Snowflake.
- Crediti del warehouse consumati.
- Se la sincronizzazione viene completata senza nuovi tentativi o lavoro ripetuto.
Il segnale più forte è un miglioramento sia della durata di sincronizzazione sia del calcolo Snowflake, anziché di una sola metrica presa isolatamente.
Passaggio 8: monitora le prossime sincronizzazioni
Monitora diverse sincronizzazioni successive invece di fare affidamento su una singola esecuzione. Cerca:
- Calcolo stabile o in diminuzione man mano che la tabella degli eventi cresce.
- Meno scansioni ampie dello storico dei dati.
- Durata della sincronizzazione più prevedibile.
- Nessun aumento delle query non riuscite o ripetute.
Condividi i risultati con Klaviyo, inclusi gli ID query prima e dopo, quando disponibili.
Risoluzione dei problemi
L’istruzione Search Optimization non va a buon fine
Verifica che:
- L'account Snowflake supporta la funzionalità.
- Il ruolo di esecuzione ha l'autorizzazione per modificare la tabella.
- Il nome della tabella e la colonna ID sono corretti.
- Search Optimization non è già configurata per la colonna richiesta.
L'istruzione di clustering non va a buon fine
Verifica che:
- Il nome della tabella è corretto.
- La colonna del timestamp esista e sia un valore timestamp o data compatibile.
- Il ruolo di esecuzione può modificare la tabella.
- L'espressione di clustering corrisponde al campo effettivo del timestamp dell'evento.
La sincronizzazione è ancora lenta o sembra bloccata
Invia a Klaviyo:
- Le definizioni esatte delle tabelle e le istruzioni utilizzate.
- L'orario in cui è stata applicata ogni modifica.
- L'ora di inizio della sincronizzazione e lo stato attuale.
- ID di query Snowflake e utilizzo del warehouse.
- Qualsiasi prova che lo stato dell'interfaccia utente non stia avanzando.
Non rimuovere le ottimizzazioni solo perché la prima sincronizzazione non migliora. Per prima cosa, conferma che Snowflake abbia completato la manutenzione pertinente e che Klaviyo abbia verificato la configurazione lato esportazione.
Checklist di completamento
- Tabella degli eventi corretta identificata.
- Colonne ID e timestamp dell'evento confermate.
- Sincronizzazione di base e metriche di calcolo registrate (facoltativo).
- Ottimizzazione della ricerca abilitata per le ricerche di uguaglianza su id (facoltativo).
- tabella Events raggruppata per data evento.
- Klaviyo informato delle modifiche.
- Sincronizzazione di convalida controllata completata.
- Prestazioni e calcolo della sincronizzazione di follow-up esaminati (facoltativo).