Guida all’ottimizzazione della tabella eventi di Snowflake
Cosa imparerai
Scopri come applicare 2 ottimizzazioni Snowflake consigliate alla tabella degli eventi esportata da Klaviyo. Queste modifiche sono pensate per ridurre le scansioni estese delle tabelle 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:
- Hai configurato una destinazione Snowflake per esportare gli eventi di Klaviyo. Per le istruzioni di configurazione, consulta Come funziona la sincronizzazione del magazzino dati in Klaviyo.
- 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.
- Il tuo ruolo ha OWNERSHIP sulla tabella events e USAGE o OWNERSHIP sul relativo database e sullo schema. Se abiliti Search Optimization, il tuo ruolo deve avere anche ADD SEARCH OPTIMIZATION sullo schema.
- 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 del database, dello schema e della tabella nel tuo account. Sostituisci <EVENTS_SCHEMA> con il database e lo schema che contengono quella tabella, ad esempio: MY_DATABASE.PUBLIC.
Rivedi i costi di Snowflake con il team della piattaforma dati prima di applicare queste modifiche. Search Optimization e clustering automatico possono aggiungere costi di configurazione e manutenzione continua, oltre ai costi di archiviazione. Vedi i costi di Search Optimization e i costi di clustering, soprattutto prima di ottimizzare una tabella di grandi dimensioni.
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.
Prima di attivare l'ottimizzazione della ricerca, rivedi la configurazione esistente:
DESCRIBE SEARCH OPTIMIZATION ON <EVENTS_TABLE>;Se l’output include una voce EQUALITY attiva per id, mantieni la configurazione esistente e salta le istruzioni ALTER TABLE in questo passaggio. In caso contrario, conferma la configurazione con il tuo amministratore Snowflake prima di aggiungerla.
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.
Passaggio 4: aggiungi un clustering basato sulla data alla tabella degli eventi
Prima di impostare la chiave di clustering, esegui il seguente comando e trova la tabella degli eventi nell'output:
SHOW TABLES IN SCHEMA <EVENTS_SCHEMA>;Controlla cluster_by. Se specifica già TO_DATE() sulla colonna del timestamp dell’evento, mantieni quella chiave e salta le istruzioni ALTER TABLE in questo passaggio. Se specifica una chiave diversa, prima verifica la modifica con il tuo team della piattaforma dati: CLUSTER BY sostituisce la chiave esistente.
Usa la colonna timestamp confermata nel passaggio 1. Se la colonna ha un nome diverso, sostituisci quella colonna nell'espressione.
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));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 le istruzioni che hai eseguito sono andate a buon fine, oppure dopo aver confermato che le impostazioni richieste sono già attive:
- 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 magazzino, gli addebiti per la manutenzione dell'ottimizzazione e le prestazioni delle query mentre la tabella viene gestita.
Il tempo necessario dipende dalle dimensioni della tabella, dal layout dei dati esistente e dal carico di lavoro di Snowflake.
Prima di confrontare le prestazioni di sincronizzazione, esegui di nuovo SHOW TABLES e controlla la riga della tabella degli eventi:
SHOW TABLES IN SCHEMA <EVENTS_SCHEMA>;- Se Search Optimization è abilitata, verifica che search_optimization sia ON e che search_optimization_progress abbia raggiunto 100 prima di valutarne le prestazioni.
- Verifica che cluster_by mostri l’espressione di data prevista e che automatic_clustering sia su ON. Se è su OFF, chiedi al tuo amministratore Snowflake di riprendere Automatic Clustering. L’impostazione su ON indica che la manutenzione è abilitata, non che il reclustering iniziale sia terminato. Chiedi al tuo amministratore di controllare l’attività di reclustering prima di confrontare i risultati.
Passaggio 6: avvisa Klaviyo
Invia a Klaviyo i seguenti dettagli:
- Il nome completo e qualificato della tabella degli eventi.
- Quali dichiarazioni hai eseguito e quando, oppure quali impostazioni erano già in uso.
- Se l'ottimizzazione della ricerca è attivata per l'ID o se hai saltato il passaggio 3.
- Conferma che il clustering basato sulla data è configurato nella colonna del timestamp dell’evento.
- L’account/regione Snowflake e il warehouse usato per la sincronizzazione.
- Qualsiasi ID di sincronizzazione, ID di query o dettagli dell’errore pertinenti.
Chiedi a Klaviyo di confermare se l’esportazione del tuo evento richiede una modifica alla configurazione per usare la corrispondenza basata sulla data con la colonna di timestamp in cluster.
Passaggio 7: esegui una sincronizzazione di convalida controllata (facoltativo)
Coordina un'esecuzione di convalida controllata con Klaviyo. Quando possibile, esegui la convalida con una sincronizzazione incrementale o comunque limitata prima di riavviare un backfill storico di grandi dimensioni.
Se hai acquisito un valore di riferimento nel passaggio 2, confronta le esecuzioni con volumi di dati simili utilizzando lo stesso data warehouse. Rivedi:
- Ora di inizio dell’elaborazione.
- Durata totale della sincronizzazione.
- Comportamento dell'avanzamento nell'interfaccia utente di Klaviyo.
- Byte scansionati di Snowflake.
- Crediti Snowflake consumati, inclusi l'utilizzo del warehouse e gli addebiti per la manutenzione di ottimizzazione.
- Se la sincronizzazione viene completata senza nuovi tentativi o lavoro ripetuto.
Valuta insieme la durata della sincronizzazione, i byte scansionati e i costi totali di Snowflake. Ridurre solo l'utilizzo del warehouse non determina di per sé un risparmio sui costi se aumentano i costi di manutenzione dell'ottimizzazione o di archiviazione.
Passaggio 8: monitora le prossime sincronizzazioni
Monitora diverse sincronizzazioni successive invece di fare affidamento su una singola esecuzione. Cerca:
- Costi Snowflake stabili o in calo per volumi di dati comparabili, incluse le spese di manutenzione e archiviazione.
- 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 è su Enterprise Edition o versione successiva.
- Il ruolo di esecuzione ha OWNERSHIP sulla tabella.
- Il nome della tabella e la colonna ID sono corretti.
- Il ruolo di esecuzione dispone dell'autorizzazione ADD SEARCH OPTIMIZATION sullo schema che contiene la tabella.
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 dispone di OWNERSHIP sulla tabella e di USAGE o OWNERSHIP sul relativo database e schema.
- 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 convalida controllata completata (facoltativa).
- Prestazioni e calcolo della sincronizzazione di follow-up esaminati (facoltativo).