Passer au contenu principal

Ce que vous allez construire

Un workflow qui synchronise les données entre systèmes — par exemple, maintenir une Google Sheet synchronisée avec BigQuery, ou pousser les données CRM vers votre entrepôt de données. Temps de réalisation : 20 minutes Nodes utilisés : Google Sheets, Loop, BigQuery Writer, Conditional

Le problème

Les données sont dispersées à plusieurs endroits :
  • Données marketing dans Google Sheets
  • Données commerciales dans le CRM
  • Données produits dans les bases de données
  • Analytiques dans BigQuery
La synchronisation manuelle est source d’erreurs et chronophage.

Vue d’ensemble du workflow

Modèles de synchronisation courants

Sheet vers BigQuery

Synchronisez les feuilles marketing vers votre entrepôt de données :
Google Sheets → Transform → BigQuery Writer

CRM vers l’entrepôt

Centralisez les données commerciales :
HubSpot → Transform → BigQuery Writer

Agrégation multi-sources

Combinez des données de plusieurs sources :
Source A ─┐
Source B ─┼→ Merge → Destination
Source C ─┘

Guide pas à pas : Sheet vers BigQuery

Étape 1 : Configurer la source

Créez une Google Sheet avec des données structurées :
datecampaignspendimpressionsclicks
2024-01-15Brand1000500002500
2024-01-15Search2000300003000

Étape 2 : Créer le workflow

  1. Cliquez sur New Workflow
  2. Nommez-le « Marketing Data Sync »

Étape 3 : Récupérer les données source

1

Add Google Sheets Reader

Configurez :
  • Spreadsheet ID : votre feuille marketing
  • Range : Marketing!A:E
  • Include Headers : Yes

Étape 4 : Transformer les données

1

Add Loop node

Traitez chaque ligne :
  • Items : {{GoogleSheets_0.data}}
2

Add transformation logic

Utilisez un LLM ou des nodes utilitaires pour :
  • Convertir les formats de date
  • Calculer les métriques dérivées
  • Nettoyer les champs texte
Exemple de transformation :
{
  "date": "{{date}}",
  "campaign": "{{Lcampaign}}",
  "spend": "{{spend}}"
}

Étape 5 : Valider les données

1

Add Conditional node

Vérifiez la validité des données :Conditions :
  • date n’est pas vide
  • spend est un nombre
  • campaign n’est pas vide
Acheminer les enregistrements invalides vers la journalisation des erreurs.

Étape 6 : Écrire vers la destination

1

Add BigQuery Writer node

Configurez :
  • Project : votre projet GCP
  • Dataset : marketing_data
  • Table : campaign_metrics
  • Write Mode : Append (ou Replace pour un rafraîchissement complet)
  • Data : données de ligne transformées

Étape 7 : Journaliser les résultats de synchronisation

1

Add Google Sheets Writer for logging

Configurez :
  • Spreadsheet ID : votre journal de synchronisation
  • Data :
[[
  "{{timestamp}}",
  "{{totalItems}}",
  "{{successCount}}",
  "{{errorCount}}",
  "success"
]]

Gestion des modes de synchronisation

Rafraîchissement complet

Remplacer toutes les données à chaque synchronisation :
1. Supprimer les enregistrements existants
2. Insérer tous les nouveaux enregistrements
Idéal pour : jeux de données réduits, instantanés quotidiens

Synchronisation incrémentale

Ne synchroniser que les enregistrements nouveaux ou modifiés :
1. Suivre l’horodatage de la dernière sync
2. Récupérer uniquement les enregistrements après cet horodatage
3. Insérer ou mettre à jour selon le cas
Idéal pour : gros volumes, besoins en quasi temps réel

Upsert (Update or Insert)

Mettre à jour les enregistrements existants, insérer les nouveaux :
1. Vérifier si l’enregistrement existe (par ID)
2. S’il existe : mise à jour
3. Sinon : insertion
Idéal pour : données CRM, données de référence

Mise en œuvre de la synchronisation incrémentale

Suivre la dernière synchronisation

Stocker l’horodatage de la dernière synchronisation réussie :
1

Fetch last sync time

Lire depuis une feuille ou une base de suivi :
SELECT MAX(synced_at) FROM sync_log WHERE table = 'campaigns'
2

Filter source data

Ne récupérer que les nouveaux enregistrements :
WHERE updated_at > '{{lastSyncTime}}'
3

Update sync time on success

Après une synchronisation réussie :
INSERT INTO sync_log (table, synced_at, record_count)
VALUES ('campaigns', NOW(), {{recordCount}})

Gestion des erreurs

Logique de nouvelle tentative

Pour les échecs temporaires :
Loop:
  Essayer d’écrire vers BigQuery
  En cas d’échec :
    Attendre 5 secondes
    Nouvelle tentative (max 3 fois)
  Si échec persistant :
    Journaliser l’erreur
    Continuer avec l’enregistrement suivant

File des enregistrements en erreur

Conserver les enregistrements en échec pour revue manuelle :

Alerte en cas d’échec

Envoyer des notifications quand la synchronisation échoue :
Conditional:
  Si error_count > seuil
    → Envoyer un e-mail d’alerte
    → Poster sur Slack

Planification des jobs de synchronisation

Type de syncFréquenceMoment
Temps réelToutes les 5-15 minContinu
Quasi temps réelToutes les heuresÀ l’heure pile
QuotidienUne fois par jourHors pointe (2-4 h)
HebdomadaireUne fois par semaineWeek-end

Bonnes pratiques

Idempotence

Rendre les synchronisations sûres à relancer :
  • Utiliser l’upsert plutôt que l’insert
  • Inclure des horodatages pour la déduplication
  • Suivre les lots de sync avec des ID

Validation des données

Valider avant d’écrire :
  • Vérifier les champs obligatoires
  • Contrôler les types de données
  • Valider les plages
  • Vérifier l’intégrité référentielle

Journalisation

Tout journaliser :
  • Heures de début et de fin
  • Nombre d’enregistrements
  • Statut succès/échec
  • Détails des erreurs

Surveillance

Suivre la santé des synchronisations :
MétriqueSeuil d’alerte
Durée de sync> 2× la normale
Taux d’erreur> 5 %
Sync manquées> 1 manquée
Délai des données> 1 heure

Résultats attendus

MétriqueManuelAutomatisé
Fréquence de syncQuotidienne (au mieux)Toutes les 15 min
Taux d’erreur5-10 %< 1 %
Temps passé2-4 h/semaine0
Fraîcheur des donnéesHeures/joursMinutes

Étapes suivantes