À propos de Openflow Connector for Salesforce Bulk API¶
Note
Ce connecteur est soumis aux conditions d’utilisation de Snowflake Connector.
Cette rubrique décrit les concepts de base du Openflow Connector for Salesforce Bulk API, son flux de travail et ses limites.
Intégration sans copie avec Salesforce Data Cloud¶
Snowflake propose un partage bidirectionnel sans copie et une intégration avec Salesforce. Cette intégration est recommandée si vous utilisez Salesforce Data Cloud et avez besoin d’une intégration bidirectionnelle en temps quasi réel.
Pour plus d’informations sur l’intégration sans copie avec Salesforce Data Cloud, consultez les articles de blog suivants :
À propos de Openflow Connector for Salesforce Bulk API¶
Le Openflow Connector for Salesforce Bulk API fournit une intégration des données basée sur la réplication. Ce connecteur est conçu pour les utilisateurs qui n’utilisent pas Salesforce Data Cloud et préfèrent un connecteur Snowflake Openflow entièrement géré. Le connecteur utilise des APIs REST Salesforce publiques pour répliquer les données de Salesforce vers Snowflake à une fréquence définie par l’utilisateur. Le connecteur prend en charge la capture des données modifiées (CDC) et synchronise les données dans Snowflake en synchronisation avec Salesforce.
Vous pouvez utiliser un ou les deux types d’intégrations de données en fonction de vos cas d’utilisation spécifiques. Ce chapitre décrit comment configurer et utiliser Openflow Connector for Salesforce Bulk API pour répliquer les données de Salesforce vers Snowflake.
Cas d’utilisation¶
Utilisez Openflow Connector for Salesforce Bulk API pour répliquer des objets standard ou personnalisés de Salesforce vers Snowflake à une fréquence spécifiée par l’utilisateur et les maintenir à jour dans Snowflake.
Workflow¶
Le flux de travail suivant décrit les étapes de configuration et d’utilisation de Openflow Connector for Salesforce Bulk API.
Un administrateur Salesforce crée et configure une application client externe dans Salesforce et l’approuve pour un utilisateur spécifique.
Un administrateur Openflow effectue les tâches suivantes :
Crée un utilisateur de service pour le connecteur, un entrepôt pour le connecteur et une base de données de destination et un schéma pour la réplication.
Installez le connecteur.
Spécifiez les paramètres requis pour le modèle de flux.
L’ingénieur des données exécute le flux pour répliquer les objets de Salesforce vers Snowflake.
Limitations¶
Tenez compte des limites suivantes lors de l’utilisation du connecteur :
Les domaines Salesforce personnalisés ne sont pas pris en charge.
Parcourir les relations d’objets et récupérer les objets associés ne sont pas pris en charge.
Le connecteur ne prend pas en charge les suppressions matérielles dans Snowflake. Vous pouvez soit exécuter une requête sur la table de destination pour supprimer toutes les lignes où la colonne
isDeletedindiquetrueou effectuez une actualisation complète de la table de destination pour refléter les « suppressions matérielles ».Les champs de type
location,address, oubase64ne sont pas pris en charge et sont ignorées.Vous ne pouvez pas consolider les données de plusieurs instances Salesforce dans une seule base de données dans Snowflake. Les données d’une seule instance ou d’une seule organisation Salesforce sont ingérées dans une base de données de Snowflake. Une table est créée dans cette base de données pour chaque objet Salesforce répliqué.
Les fichiers joints aux enregistrements Salesforce sont ignorés.
Les champs de formule ne peuvent pas être ingérés de manière incrémentielle.
Authentification¶
Le connecteur utilise la méthode d’authentification JWT via une application client externe pour se connecter à Salesforce et récupérer des données. Voir Openflow Connector for Salesforce Bulk API : Configurer Salesforce pour la documentation sur la configuration de l’application client sur Salesforce.
Cycle de vie de la réplication¶
Le connecteur réplique les données en deux étapes : réplication initiale et réplication incrémentielle.
Réplication initiale¶
Le connecteur appelle l’API Bulk 2.0 de Salesforce pour découvrir les objets standard et personnalisés spécifiés dans la configuration du connecteur. Le connecteur respecte les limites de l’API Bulk 2.0.
Le connecteur crée une table par objet personnalisé ou standard avec une colonne pour chaque champ.
Le connecteur utilise Snowpipe Streaming pour le chargement initial afin d’insérer des lignes dans la table en fonction des valeurs des champs de l’objet Salesforce.
Réplication incrémentale¶
Les mises à jour incrémentielles utilisent un entrepôt Snowflake qui peut être configuré dans les paramètres du connecteur. En fonction de vos exigences en matière de latence et d’actualisation des données, vous pouvez configurer la fréquence d’actualisation des mises à jour de 1 minute à 24 heures, ce qui détermine la fréquence d’actualisation des tables dans Snowflake.
En utilisant la fréquence d’actualisation que vous spécifiez, le connecteur appelle l’API Bulk de Salesforce pour détecter les modifications dans les objets précédemment ingérés. Le connecteur identifie les enregistrements modifiés en vérifiant des champs d’horodatage spécifiques dans les objets Salesforce.
Pour la plupart des objets, le connecteur utilise le champ SystemModstamp. Si SystemModstamp n’est pas disponible, le connecteur tente d’utiliser les champs suivants, par ordre de préférence :
LastModifiedDateCreatedDateLoginTime
Note
Pour les tables historiques (objets pour lesquels le suivi historique est activé), le connecteur utilise toujours le champ CreatedDate pour détecter les modifications.
Le connecteur utilise ensuite Snowpipe Streaming pour pousser les données incrémentielles dans une table mise en zone de préparation et exécute une requête de fusion pour charger les données dans la table de destination finale.
Évolution du schéma¶
Le connecteur prend en charge l’évolution du schéma lorsque les objets sources changent dans Salesforce.
- Lorsqu’un nouveau champ est ajouté à l’objet source:
Le connecteur ajoute une nouvelle colonne à la table de destination dans Snowflake.
- Lorsqu’un champ existant est renommé dans l’objet source:
Le connecteur traite le renommage à la fois comme une suppression de champ et comme un ajout de champ. L’ajout de champs entraîne l’ajout d’une nouvelle colonne à la table de destination. La suppression du champ est gérée comme décrit ci-dessous.
- Lorsqu’un champ existant est supprimé dans l’objet source:
Le connecteur prend en charge trois stratégies :
Supprimer : supprime la colonne correspondante dans la table de destination dans Snowflake. Il s’agit du comportement par défaut.
Ignorer : ignore le champ supprimé dans la source et l’ignore à l’avenir.
Renommer : renomme le champ supprimé de la table de destination.
Par exemple, si la stratégie de suppression est définie sur Ignore et si un champ est renommé pour un objet Salesforce, la colonne existante dans Snowflake sera inchangée et une nouvelle colonne avec le nouveau nom de champ sera ajoutée.
Comment les objets sont supprimés¶
Lorsque des objets sont supprimés dans Salesforce, le connecteur ne les « supprime pas complètement » de Snowflake. Le connecteur effectue des « suppressions logicielles » pour les objets supprimés dans Salesforce et indique que les objets sources ont été supprimés en définissant la colonne isDeleted sur true dans les tables correspondantes de Snowflake.
Le connecteur ne prend pas en charge les « suppressions matérielles ». Vous pouvez soit exécuter une requête sur la table de destination pour supprimer toutes les lignes où la colonne isDeleted indique true ou effectuez une actualisation complète de la table de destination pour refléter les « suppressions matérielles ».
Le connecteur peut ne pas effectuer d’opérations de suppression dans les situations où les objets sont supprimés dans Salesforce et purgés de la corbeille de Salesforce lorsque le connecteur n’était pas en cours d’exécution, par exemple si le connecteur était en pause ou à l’arrêt. Vous devez réaliser une actualisation complète de la table de destination pour pouvoir effectuer une reprise dans ces cas.
Gestion des nouvelles tentatives automatiques¶
Le connecteur relance automatiquement les opérations qui ont échoué ou les erreurs de l’API en utilisant une stratégie d’interruption exponentielle. Le connecteur attend une seconde avant la première tentative, puis double le temps d’attente pour chaque tentative suivante (deux secondes, quatre secondes, etc.). Si les échecs persistent, le connecteur arrête les tentatives jusqu’à l’exécution planifiée suivante. Vous pouvez surveiller cette activité dans la table d’événements.
Utiliser plusieurs instances de connecteur pour gérer différentes planifications de synchronisation¶
Si vous devez synchroniser différents objets à différentes fréquences, par exemple certaines toutes les 30 minutes et d’autres toutes les 24 heures, Snowflake recommande de déployer deux instances de connecteurs distinctes dans la même durée d’exécution. Vous pouvez ensuite configurer les paramètres de synchronisation indépendamment pour chaque instance.
Note
Le déploiement de plusieurs instances de connecteur dans la même exécution n’entraîne pas de coûts supplémentaires.
De même, si vous devez récupérer entièrement certains objets à chaque fois que le connecteur s’exécute, par exemple pour contourner les limites avec des formules, Snowflake recommande de déployer deux instances de connecteur distinctes dans le même environnement d’exécution et de configurer les paramètres pour chaque instance.
Prochaines étapes¶
Pour plus d’informations sur la configuration du connecteur, reportez-vous à la rubrique suivante :