Ouvrir le Studio

Workflow de synchronisation des données

Gardez vos sources de données synchronisées automatiquement

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

graph LR
    A[Source Data] --> B[Transform]
    B --> C[Validate]
    C --> D{Valid?}
    D -->|Yes| E[Write to Destination]
    D -->|No| F[Log Error]
    E --> G[Update Sync Log]

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

Add Google Sheets Reader

Configurez :

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

Étape 4 : Transformer les données

Add Loop node

Traitez chaque ligne :

  • Items : {{GoogleSheets_0.data}}

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

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

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

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 :

graph LR
    A[Get Last Sync Time] --> B[Fetch Records Since Then]
    B --> C[Process]
    C --> D[Update Last Sync Time]

Fetch last sync time

Lire depuis une feuille ou une base de suivi :

SELECT MAX(synced_at) FROM sync_log WHERE table = 'campaigns'

Filter source data

Ne récupérer que les nouveaux enregistrements :

WHERE updated_at > '{{lastSyncTime}}'

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 :

graph LR
    A[Record] --> B{Valid?}
    B -->|Yes| C[Write to Destination]
    B -->|No| D[Dead Letter Queue]
    C -->|Fail| D

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