Guide d’optimisation de la table d’événements Snowflake
Objectif de cet article
Ce guide présente deux optimisations Snowflake recommandées pour la table des événements Klaviyo. Ces modifications visent à réduire les analyses globales de la table et à aider Snowflake à se concentrer sur les enregistrements d’événements et les plages de temps pertinents lors de la synchronisation.
- Activez l’optimisation de recherche pour les recherches d’égalité sur l’ID. Cela nécessite Snowflake Enterprise Edition ou une version ultérieure.
- Regroupez la table des événements par date d’événement. Cela fonctionne sur toutes les éditions Snowflake et doit être fait, que vous puissiez ou non également effectuer l’étape d’optimisation de la recherche.
Avant de commencer
Confirmez les éléments suivants auprès de votre équipe de plateforme de données :
- Que votre compte Snowflake soit sur Enterprise Edition ou une édition supérieure, si vous prévoyez d’effectuer l’étape 3 (Search Optimization). Le clustering à l’étape 4 fonctionne sur toutes les éditions Snowflake et doit être effectué dans tous les cas.
- Vous avez l’autorisation de modifier la table des événements et d’activer les fonctionnalités d’optimisation au niveau de la table.
- Vous connaissez le nom complet de la table des événements Klaviyo dans votre environnement.
- La table des événements contient une colonne id, et la colonne d’horodatage de l’événement est nommée DATETIME ou porte un nom équivalent.
- Vous disposez d’une fenêtre de test planifiée, en particulier si une synchronisation historique est actuellement en cours.
Les noms de tables dans ce guide sont des exemples. Remplacez <EVENTS_TABLE> par le nom exact de la base de données, du schéma et de la table dans votre compte.
Étape 1 : identifier et valider la table des événements
- Ouvrez une feuille de calcul Snowflake en utilisant un rôle disposant des autorisations requises.
- Confirmez l’identifiant exact de la table utilisé par votre intégration Klaviyo.
- Vérifiez que le tableau contient les colonnes de recherche et d’horodatage attendues.
Par exemple :
DESCRIBE TABLE <EVENTS_TABLE>; Confirmez que :
- id est l’identifiant d’événement utilisé pour les recherches d’égalité.
- DATETIME correspond à l’horodatage de l’événement, ou identifiez la colonne d’horodatage équivalente à utiliser dans l’expression de clustering.
Étape 2 : établir une référence (facultatif)
Avant d’appliquer les modifications, consignez suffisamment d’informations pour comparer les résultats par la suite :
- Statut et durée de synchronisation actuels.
- Indique si la synchronisation est historique ou incrémentielle.
- Entrepôt Snowflake utilisé par les intégrations.
- Crédits approximatifs ou calcul utilisés par l’activité de synchronisation récente.
- Tout ID de requête, message d’erreur ou horodatage pertinent issu de l’historique des requêtes Snowflake.
Si une synchronisation historique est en cours depuis une durée inhabituellement longue, coordonnez-vous avec Klaviyo avant de la mettre en pause ou de la redémarrer.
Étape 3 : activer l’optimisation de recherche sur l’ID de l’événement (facultatif)
L’optimisation de la recherche nécessite Snowflake Enterprise Edition ou une version supérieure. Si votre compte est sur Standard Edition, ignorez cette étape et passez à l’étape 4 — le clustering n’a aucune exigence d’édition et doit être effectué dans tous les cas.
Exécutez l’instruction suivante après avoir remplacé l’espace réservé par le nom réel de votre table :
ALTER TABLE <EVENTS_TABLE>
ADD SEARCH OPTIMIZATION ON EQUALITY(id); Par exemple, si la table s’appelle klaviyo_events :
ALTER TABLE klaviyo_events
ADD SEARCH OPTIMIZATION ON EQUALITY(id); Cela crée un chemin d’accès optimisé pour les prédicats d’égalité sur id, ce qui vise à réduire la quantité que Snowflake doit analyser dans la table des événements pour des recherches ciblées.
Si l’optimisation de la recherche est déjà activée pour id, ne créez pas de configuration en double. Confirmez plutôt la configuration existante avec votre administrateur Snowflake.
Étape 4 : ajouter un regroupement basé sur la date au tableau des événements
Appliquez une clé de clustering en fonction de la partie date de l’horodatage de l’événement :
ALTER TABLE <EVENTS_TABLE>
CLUSTER BY (TO_DATE(DATETIME)); Par exemple :
ALTER TABLE KLAVIYO_EVENT
CLUSTER BY (TO_DATE(DATETIME)); Utilisez la colonne d’horodatage confirmée à l’étape 1. Si votre colonne porte un autre nom, remplacez-la par cette colonne dans l’expression.
Le clustering basé sur la date est conçu pour aider Snowflake à élaguer les plages de temps non pertinentes au lieu d’analyser la totalité de la table des événements.
Étape 5 : permettre à la maintenance Snowflake de se terminer
Une fois que les deux instructions ont réussi :
- Laissez à Snowflake le temps de créer ou de maintenir les structures de recherche et de clustering.
- Évitez d’évaluer le résultat à partir de la première requête immédiatement après les instructions DDL.
- Continuez à surveiller l’utilisation de l’entrepôt de données et les performances des requêtes pendant la maintenance de la table.
Le temps nécessaire dépend de la taille de la table, de la disposition des données existantes et de la charge de travail Snowflake.
Étape 6 : notifier Klaviyo
Envoyez à Klaviyo les informations suivantes :
- Le nom complet de la table d’événements.
- Horodatage de l’application de chaque instruction.
- Confirmation que l’optimisation de recherche a été activée pour l’ID.
- Confirmation que le regroupement par date a été appliqué.
- Le compte/région Snowflake et l’entrepôt utilisés pour la synchronisation.
- Tout ID de synchronisation, ID de requête, ou détail d’erreur pertinent.
Klaviyo vérifiera si une configuration côté exportation est requise pour tirer pleinement parti de l’optimisation de la table des événements.
Étape 7 : exécuter une synchronisation de validation contrôlée (facultatif)
Dans la mesure du possible, validez avec une synchronisation incrémentielle ou autrement limitée avant de redémarrer un important remplissage rétroactif historique.
Comparez la nouvelle exécution à la référence de l’étape 2 :
- Il est temps de commencer le traitement.
- Durée totale de la synchronisation.
- Comportement de la progression dans l’interface utilisateur de Klaviyo.
- Octets Snowflake analysés.
- Crédits d’entrepôt consommés.
- Si la synchronisation se termine sans nouvelles tentatives, ni travail répété.
Le signal le plus fort est une amélioration à la fois de la durée de synchronisation et du calcul Snowflake, plutôt que d’un seul indicateur isolé.
Étape 8 : surveillez les prochaines synchronisations
Suivez plusieurs synchronisations ultérieures plutôt que de vous fier à une seule exécution. Recherchez :
- Calcul stable ou en baisse à mesure que la table d’événements s’agrandit.
- Moins d’analyses générales des données historiques.
- Durée de synchronisation plus prévisible.
- Aucune augmentation des requêtes échouées ou répétées.
Partagez les résultats avec Klaviyo, y compris les ID de requête avant et après lorsque disponibles.
Résolution de problèmes
L’instruction d’optimisation de la recherche échoue
Vérifiez que :
- Le compte Snowflake prend en charge la fonctionnalité.
- Le rôle d’exécution dispose de l’autorisation de modifier la table.
- Le nom de la table et la colonne id sont corrects.
- L’optimisation de la recherche n’est pas encore configurée pour la colonne demandée.
L’instruction de clustering échoue
Vérifiez que :
- Le nom de la table est correct.
- La colonne d’horodatage existe et correspond à une valeur d’horodatage ou de date compatible.
- Le rôle d’exécution peut modifier la table.
- L’expression de clustering correspond au champ réel d’horodatage de l’événement.
La synchronisation est toujours lente ou semble bloquée
Envoyer Klaviyo :
- Les définitions exactes de la table et les instructions utilisées.
- L’heure à laquelle chaque modification a été appliquée.
- L’heure de début de la synchronisation et l’état actuel.
- Identifiants de requête Snowflake et utilisation de l’entrepôt.
- Toute preuve indiquant que le statut de l’interface utilisateur ne progresse pas.
Ne supprimez pas les optimisations uniquement parce que la première synchronisation ne s’améliore pas. Commencez par confirmer que Snowflake a terminé la maintenance pertinente et que Klaviyo a vérifié sa configuration côté exportation.
Checklist de finalisation
- Table des événements correcte identifiée.
- Colonnes id et horodatage de l’événement confirmées.
- Synchronisation de référence et indicateurs de calcul enregistrés (facultatif).
- Optimisation de la recherche activée pour les recherches d’égalité sur l’id (facultatif).
- Table des événements clusterisée par date d’événement.
- Klaviyo a été informé des modifications.
- La synchronisation de validation contrôlée est terminée.
- Effectuez un suivi des performances de synchronisation ultérieure et de la capacité de calcul examinée (facultatif).