Charger des données Salesforce dans BigQuery

Vous pouvez charger les données de votre compte Salesforce Sales dans BigQuery à l'aide du connecteur du service de transfert de données BigQuery pour Salesforce. Le service de transfert de données BigQuery vous permet de planifier des tâches de transfert récurrentes qui ajoutent vos dernières données de votre compte Salesforce Sales à BigQuery.

Limites

Les transferts de données Salesforce sont soumis aux limitations suivantes :

  • Le connecteur Salesforce n'accepte que les transferts depuis un compte Salesforce Sales.
  • Le connecteur Salesforce n'est compatible qu'avec les champs inclus dans la version 64.0 de l'API Salesforce Bulk V1. Il est possible que certains champs inclus dans les versions précédentes de l'API Bulk Salesforce ne soient pas compatibles. Pour en savoir plus sur ces modifications apportées au connecteur Salesforce, consultez API Bulk Salesforce.
  • Le connecteur Salesforce utilise l'API Salesforce Bulk V1 pour se connecter au point de terminaison Salesforce et récupérer les données.
    • Le connecteur Salesforce n'accepte que l'API Salesforce groupée V1 pour se connecter à l'instance Salesforce et ne prend en charge que le transfert d'entités compatibles avec l'API Salesforce groupée. Pour en savoir plus sur les entités compatibles, consultez l'article Erreur "L'entité n'est pas compatible avec l'API Bulk".
  • Le connecteur Salesforce n'est pas compatible avec le transfert des objets suivants qui comportent des champs binaires.
    • Attachment
    • ContentVersion
    • Document
    • StaticResource
    • Scontrol
    • EmailCapture
    • MailMergeTemplate
  • L'intervalle minimum entre deux transferts de données récurrents est de 15 minutes. L'intervalle par défaut entre transferts récurrents est de 24 heures.
  • En raison des limites de traitement de Salesforce, la planification d'un trop grand nombre de transferts de données à la fois peut entraîner des retards ou des échecs. Nous vous recommandons de limiter les transferts de données Salesforce aux éléments suivants :
    • Ne pas inclure plus de 10 composants par configuration de transfert.
    • Ne lancez pas plus de 10 transferts simultanément pour l'ensemble de vos configurations de transfert.
  • Une seule configuration de transfert ne peut prendre en charge qu'une seule exécution de transfert de données à un moment donné. Si une deuxième exécution de transfert de données est planifiée avant la fin de la première, seule la première exécution de transfert de données sera effectuée. Toutes les autres exécutions de transfert de données qui chevauchent la première seront ignorées.
    • Pour éviter les transferts ignorés dans une même configuration de transfert, nous vous recommandons d'augmenter la durée entre les transferts de données volumineux en configurant la fréquence de répétition.
  • Si votre instance de VM et votre association réseau configurées se trouvent dans des régions différentes, des transferts de données interrégionaux peuvent avoir lieu lorsque vous transférez des données depuis Salesforce.

Limites des transferts incrémentiels

Les transferts Salesforce incrémentaux sont soumis aux limitations suivantes :

  • Vous ne pouvez choisir que TIMESTAMP colonnes comme colonnes de filigrane.
  • L'ingestion incrémentielle n'est possible que pour les composants dont les colonnes de filigrane sont valides.
  • Les valeurs d'une colonne de filigrane doivent augmenter de manière monotone.
  • Les transferts incrémentiels ne peuvent pas synchroniser les opérations de suppression dans la table source.
  • Une même configuration de transfert ne peut prendre en charge qu'une ingestion incrémentielle ou complète.
  • Vous ne pouvez pas mettre à jour les objets de la liste asset après la première exécution d'ingestion incrémentielle.
  • Vous ne pouvez pas modifier le mode d'écriture dans une configuration de transfert après la première exécution d'ingestion incrémentielle.
  • Vous ne pouvez pas modifier la colonne de filigrane ni la clé primaire après la première exécution d'ingestion incrémentielle.

Options d'ingestion de données

Les sections suivantes fournissent plus d'informations sur les options d'ingestion de données lorsque vous configurez un transfert de données Salesforce.

Transferts complets ou incrémentiels

Vous pouvez spécifier la façon dont les données sont chargées dans BigQuery en sélectionnant la préférence d'écriture Complète ou Incrémentielle dans la configuration du transfert lorsque vous configurez un transfert Salesforce. Les transferts incrémentiels sont disponibles en version preview.

Vous pouvez sélectionner Complet pour transférer toutes les données de vos ensembles de données Salesforce à chaque transfert de données.

Vous pouvez également sélectionner Incrémentiel (Aperçu) pour ne transférer que les données qui ont été modifiées depuis le dernier transfert de données, au lieu de charger l'intégralité de l'ensemble de données à chaque transfert. Si vous sélectionnez Incrémentiel pour votre transfert de données, vous devez spécifier les modes d'écriture Ajouter ou Upsert pour définir la façon dont les données sont écrites dans BigQuery lors d'un transfert de données incrémentiel. Les sections suivantes décrivent les modes d'écriture disponibles.

Mode d'écriture Append

Le mode d'écriture Ajouter n'insère que de nouvelles lignes dans votre table de destination. Cette option ajoute strictement les données transférées sans vérifier s'il existe des enregistrements, ce qui peut entraîner une duplication des données dans la table de destination.

Lorsque vous sélectionnez le mode Ajouter, vous devez sélectionner une colonne de filigrane. Une colonne de filigrane est requise pour que le connecteur Salesforce puisse suivre les modifications apportées à la table source.

Pour les transferts Salesforce, nous vous recommandons de sélectionner une colonne qui n'est mise à jour que lorsque l'enregistrement a été créé et qui ne changera pas lors des mises à jour ultérieures. Par exemple, la colonne CreatedDate.

Mode d'écriture Upsert

Le mode d'écriture Upsert met à jour une ligne ou en insère une nouvelle dans votre table de destination en vérifiant la présence d'une clé primaire. Vous pouvez spécifier une clé primaire pour permettre au connecteur Salesforce de déterminer les modifications nécessaires pour que votre table de destination reste à jour par rapport à votre table source. Si la clé primaire spécifiée est présente dans la table BigQuery de destination lors d'un transfert de données, le connecteur Salesforce met à jour cette ligne avec les nouvelles données de la table source. Si aucune clé primaire n'est présente lors d'un transfert de données, le connecteur Salesforce insère une nouvelle ligne.

Lorsque vous sélectionnez le mode Upsert, vous devez sélectionner une colonne de filigrane et une clé primaire :

  • Une colonne de filigrane est requise pour que le connecteur Salesforce puisse suivre les modifications apportées à la table source.
    • Sélectionnez une colonne de filigrane qui est mise à jour chaque fois qu'une ligne est modifiée. Nous vous recommandons d'utiliser la colonne SystemModstamp ou LastModifiedDate.
  • La clé primaire peut être une ou plusieurs colonnes de votre tableau. Elle est nécessaire pour que le connecteur Salesforce détermine s'il doit insérer ou mettre à jour une ligne.
    • Sélectionnez les colonnes contenant des valeurs non nulles uniques pour toutes les lignes du tableau. Nous vous recommandons d'utiliser des colonnes qui incluent des identifiants générés par le système, des codes de référence uniques (par exemple, des ID à incrémentation automatique) ou des ID de séquence immuables basés sur le temps.
    • Pour éviter toute perte ou corruption de données, les colonnes de clé primaire que vous sélectionnez doivent contenir des valeurs uniques. Si vous avez des doutes sur l'unicité de la colonne de clé primaire choisie, nous vous recommandons d'utiliser le mode d'écriture Ajouter à la place.

Avant de commencer

Les sections suivantes décrivent la procédure à suivre avant de créer un transfert de données Salesforce.

Créer une application connectée Salesforce

Vous devez créer une application connectée Salesforce avec les configurations requises suivantes :

  • Configurez les informations de base dans l'application connectée. Les champs Nom de l'application connectée et Adresse e-mail du contact sont obligatoires pour un transfert Salesforce.
  • Enable OAuth Settings (Activer les paramètres OAuth) avec les configurations suivantes :
    • Cochez la case Activer les paramètres OAuth.
    • Dans le champ Callback URL (URL de rappel), saisissez ce qui suit :
      • Pour un environnement de production, saisissez https://login.salesforce.com/services/oauth2/token.
      • Pour un environnement de bac à sable, saisissez https://test.salesforce.com/services/oauth2/token.
    • Vérifiez que la case à cocher Émettre des jetons d'accès basés sur des jetons Web JSON(JWT) pour les utilisateurs nommés n'est pas cochée.
  • Dans la section Niveaux d'accès OAuth sélectionnés, sélectionnez Gérer les données utilisateur via des API.
  • Décochez la case Extension de clé de vérification pour l'échange de code (PKCE) requise pour les flux d'autorisation compatibles.
  • Cochez la case Enable Client Credentials Flow (Activer le flux des identifiants client), puis cliquez sur OK dans la notification qui s'affiche.

Une fois que vous avez configuré l'application connectée avec les configurations requises, cliquez sur Enregistrer. Vous êtes redirigé vers la page d'informations de l'application connectée que vous venez de créer.

Une fois l'application connectée créée, vous devez également configurer le flux d'identifiants client en procédant comme suit :

  1. Cliquez sur Configurer.
  2. Dans la barre de recherche, recherchez Applications associées.
  3. Cliquez sur Gérer les applications > Applications associées. Si vous utilisez Salesforce Lightning Experience, cliquez sur Gérer les applications connectées.
  4. Sur l'application connectée que vous avez créée, cliquez sur Modifier.
  5. La page Détails de l'application s'affiche. Dans la section Client Credentials Flow (Flux d'identifiants client), saisissez votre nom d'utilisateur dans le champ Run As (Exécuter en tant que). Vous pouvez utiliser l'outil de recherche dans ce champ pour vous assurer d'avoir sélectionné le bon utilisateur.
  6. Cliquez sur Enregistrer.

Informations Salesforce requises

Vous devez disposer des informations Salesforce suivantes lors de la création d'un transfert de données Salesforce :

Nom du paramètre Description
myDomain Votre domaine dans Salesforce.
clientId Clé client de l'application connectée Salesforce.
clientSecret

Code secret du client OAuth ou code secret du client de l'application connectée Salesforce.

Pour obtenir vos valeurs myDomain, clientID et clientSecret, sélectionnez l'une des options suivantes :

Salesforce Classic

Récupérer les détails de myDomain

Pour trouver votre myDomain, procédez comme suit :

  1. Connectez-vous à la plate-forme Salesforce.
  2. Cliquez sur Configurer.
  3. Dans la barre de recherche, recherchez Mon domaine.
  4. Dans les résultats de recherche, cliquez sur Domain Management (Gestion du domaine) > My Domain (Mon domaine).

Dans la section Détails de mon domaine, votre myDomain s'affiche comme préfixe dans URL actuelle de Mon domaine. Par exemple, si l'URL de votre sous-domaine Mon domaine est example.my.salesforce.com, la valeur myDomain à utiliser est example.

Récupérer les détails de ClientId et ClientSecret

Pour trouver vos valeurs ClientId et ClientSecret, procédez comme suit :

  1. Connectez-vous à la plate-forme Salesforce.
  2. Cliquez sur Configurer.
  3. Dans la barre de recherche, saisissez Applications.
  4. Dans la section Compiler des résultats de recherche, cliquez sur Créer > Applications.
  5. Cliquez sur le nom d'une application associée.
  6. Sur la page d'informations Applications connectées, cliquez sur Gérer les informations sur le consommateur.
  7. Validez votre identité à l'aide de l'une des méthodes enregistrées. Vous pouvez consulter la page d'informations sur le consommateur pendant cinq minutes maximum avant d'être invité à valider à nouveau votre identité.
  8. Sur la page Consumer Details (Détails du consommateur), la Consumer Key (Clé du consommateur) correspond à votre valeur ClientId. Le code secret du client correspond à la valeur ClientSecret.

Salesforce Lightning Experience

Récupérer les détails de myDomain

Pour trouver votre myDomain, procédez comme suit :

  1. Connectez-vous à la plate-forme Salesforce.
  2. Cliquez sur Configurer.

Ouvrez la page "Configuration" dans la plate-forme Salesforce.

  1. Dans la barre de recherche, recherchez Mon domaine.
  2. Dans les résultats de recherche, cliquez sur Paramètres de l'entreprise > Mon domaine.

Dans la section Détails de mon domaine, votre myDomain s'affiche comme préfixe dans URL actuelle de Mon domaine. Par exemple, si l'URL de votre sous-domaine Mon domaine est example.my.salesforce.com, la valeur myDomain à utiliser est example.

Récupérer les détails de ClientId et ClientSecret

  1. Connectez-vous à la plate-forme Salesforce.
  2. Cliquez sur Configurer.
  3. Dans la barre de recherche, saisissez Applications.
  4. Dans les résultats de recherche, cliquez sur Applications > Gestionnaire d'applications.
  5. Recherchez une application associée, puis cliquez sur Afficher.
  6. Cliquez sur Gérer les détails du client.
  7. Validez votre identité à l'aide de l'une des méthodes enregistrées. Vous pouvez consulter la page d'informations sur le consommateur pendant cinq minutes maximum avant d'être invité à valider à nouveau votre identité.
  8. Sur la page Consumer Details (Détails du consommateur), la Consumer Key (Clé du consommateur) correspond à votre valeur ClientId. Le code secret du client correspond à la valeur ClientSecret.

Configurer une liste d'autorisation d'adresses IP pour les transferts Salesforce

Vous devez configurer votre environnement Google Cloud et votre compte Salesforce pour ajouter des adresses IP spécifiques à la liste d'autorisation pour les transferts de données. Cela garantit que Salesforce n'accepte que les connexions provenant d'une adresse IP statique de confiance.

Pour ce faire, vous devez d'abord configurer votre réseau Google Cloud pour qu'il utilise une adresse IP statique :

  1. Configurez une traduction d'adresse réseau (NAT) publique avec une adresse IP statique dans votre réseau de cloud privé virtuel. CloudNAT doit être configuré dans la même région que l'ensemble de données de destination pour ce transfert de données.
  2. Configurez un rattachement de réseau dans le même réseau VPC. Cette ressource est utilisée par le service de transfert de données BigQuery pour accéder aux services privés.

Vous devez ensuite configurer les plages d'adresses IP de confiance dans Salesforce. Lorsque vous ajoutez la plage d'adresses IP, utilisez l'adresse IP statique de votreGoogle Cloud NAT public pour les adresses IP de début et de fin de la plage d'adresses IP.

Une fois les plages d'adresses IP configurées, vous pouvez spécifier l'adresse IP statique lorsque vous configurez votre configuration de transfert en sélectionnant votre attachement réseau dans le champ Attachement réseau.

Prérequis pour BigQuery

Rôles BigQuery requis

Pour obtenir les autorisations nécessaires pour créer un transfert de données Service de transfert de données BigQuery, demandez à votre administrateur de vous accorder le rôle IAM Administrateur BigQuery (roles/bigquery.admin) sur votre projet. Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Ce rôle prédéfini contient les autorisations requises pour créer un transfert de données du service de transfert de données BigQuery. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Les autorisations suivantes sont requises pour créer un transfert de données du service de transfert de données BigQuery :

  • Autorisations du service de transfert de données BigQuery :
    • bigquery.transfers.update
    • bigquery.transfers.get
  • Autorisations BigQuery :
    • bigquery.datasets.get
    • bigquery.datasets.getIamPolicy
    • bigquery.datasets.update
    • bigquery.datasets.setIamPolicy
    • bigquery.jobs.create

Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.

Pour en savoir plus, consultez Accorder l'accès bigquery.admin.

Configurer un transfert de données Salesforce

Ajoutez des données Salesforce à BigQuery en configurant un transfert à l'aide de l'une des options suivantes :

Console

  1. Accédez à la page "Transferts de données" dans la console Google Cloud .

    Accéder à la page Transferts de données

  2. Cliquez sur Créer un transfert.

  3. Dans la section Type de source, accédez à la liste déroulante Source, puis sélectionnez Salesforce.

  4. Dans la section Data source details (Détails de la source de données), procédez comme suit :

    • Dans le champ Rattachement de réseau, sélectionnez un rattachement de réseau dans la liste. Pour en savoir plus, consultez Configurer une liste d'autorisation d'adresses IP pour les transferts Salesforce.
    • Dans le champ Mon domaine, saisissez votre domaine Salesforce.
    • Dans le champ ID client, saisissez la clé client de l'application connectée Salesforce.
    • Dans le champ Code secret du client, saisissez le code secret du client de l'application connectée Salesforce.
    • Pour Type d'ingestion, sélectionnez Complète ou Incrémentielle.
      • Si vous sélectionnez Incrémentiel (Aperçu), pour Mode d'écriture, sélectionnez Ajouter ou Faire un upsert. Pour en savoir plus sur les différents modes d'écriture, consultez Transferts complets ou incrémentaux.
    • Dans le champ Objets Salesforce à transférer, cliquez sur Parcourir :
      • Sélectionnez les objets à transférer vers l'ensemble de données de destination BigQuery. Vous pouvez également saisir manuellement dans ce champ les objets à inclure dans le transfert de données.
      • Si vous avez sélectionné Ajouter comme mode d'écriture incrémentielle, vous devez sélectionner une colonne comme colonne de filigrane.
      • Si vous avez sélectionné Faire un upsert comme mode d'écriture incrémentielle, vous devez sélectionner une colonne comme colonne de filigrane, puis sélectionner une ou plusieurs colonnes comme clé primaire.
  5. Dans la section Paramètres de destination, accédez au menu déroulant Ensemble de données, puis sélectionnez l'ensemble de données que vous avez créé pour stocker vos données.

  6. Dans la section Nom de la configuration de transfert, sous Nom à afficher, saisissez le nom du transfert de données.

  7. Dans la section Schedule options (Options de programmation) :

    • Dans la liste Fréquence de répétition, sélectionnez une option pour spécifier la fréquence d'exécution de ce transfert de données. Pour spécifier une fréquence de répétition personnalisée, sélectionnez Personnalisée. Si vous sélectionnez À la demande, le transfert s'exécute lorsque vous le déclenchez manuellement.
    • Le cas échéant, sélectionnez Commencer ou Commencer à l'heure définie, puis indiquez une date de début et une heure d'exécution.
  8. Facultatif : dans la section Options de notification, procédez comme suit :

    • Pour activer les notifications par e-mail, cliquez sur le bouton Notification par e-mail. Lorsque vous activez cette option, l'administrateur du transfert reçoit une notification par e-mail si l'exécution du transfert échoue.
    • Pour activer les notifications d'exécution de transfert Pub/Sub pour ce transfert, cliquez sur le bouton Notifications Pub/Sub. Vous pouvez sélectionner le nom de votre sujet ou cliquer sur Créer un sujet pour en créer un.
  9. Cliquez sur Enregistrer.

bq

Saisissez la commande bq mk, puis spécifiez l'indicateur de création de transfert --transfer_config.

bq mk
    --transfer_config
    --project_id=PROJECT_ID
    --data_source=DATA_SOURCE
    --display_name=NAME
    --target_dataset=DATASET
    --params='PARAMETERS'

Où :

  • PROJECT_ID (facultatif) : ID de votre projet Google Cloud . Si vous ne fournissez pas de --project_id afin de spécifier un projet particulier, le projet par défaut est utilisé.
  • DATA_SOURCE. La source de données – salesforce.
  • NAME : nom à afficher de la configuration de transfert de données. Ce nom peut correspondre à toute valeur permettant d'identifier le transfert si vous devez le modifier ultérieurement.
  • DATASET : ensemble de données cible de la configuration de transfert.
  • PARAMETERS correspond aux paramètres de la configuration de transfert créée, au format JSON. Exemple : --params='{"param":"param_value"}'. Voici les paramètres d'un transfert de données Salesforce :

    • connector.authentication.oauth.clientId : clé client de l'application connectée Salesforce.
    • connector.authentication.oauth.clientSecret : code secret du client OAuth ou du code secret client de l'application connectée Salesforce.
    • connector.authentication.oauth.myDomain : Mon domaine Salesforce. Par exemple, si l'URL de votre domaine est example.my.salesforce.com, la valeur est example.
    • ingestionType : spécifiez FULL ou INCREMENTAL. Les transferts incrémentiels sont disponibles en preview. Pour en savoir plus, consultez Transferts complets ou incrémentaux.
    • writeMode : spécifiez WRITE_MODE_APPEND ou WRITE_MODE_UPSERT.
    • watermarkColumns : spécifiez les colonnes de votre tableau comme colonnes de filigrane. Ce champ est obligatoire pour les transferts incrémentaux.
    • primaryKeys : spécifiez les colonnes de votre tableau comme clés primaires. Ce champ est obligatoire pour les transferts incrémentaux.
    • assets : chemin d'accès aux objets Salesforce à transférer vers BigQuery.

Lorsque vous spécifiez plusieurs composants lors d'un transfert incrémentiel, les valeurs des champs watermarkColumns et primaryKeys correspondent à la position des valeurs dans le champ assets. Dans l'exemple suivant, Id correspond à la table Account, tandis que master_label et type correspondent à la table CaseHistory.

      "primaryKeys":[['Id'], ['master_label','type']],
      "assets":["Account","CaseHistory"],
  

La commande suivante crée un transfert de données Salesforce incrémentiel dans le projet par défaut et utilise le mode d'écriture APPEND.

bq mk
    --transfer_config
    --target_dataset=mydataset
    --data_source=salesforce
    --display_name='My Transfer'
    --params='{"assets": ["Account", "CaseHistory"]
        "connector.authentication.oauth.clientId": "1234567890",
        "connector.authentication.oauth.clientSecret":"ABC12345",
        "connector.authentication.oauth.myDomain":"MyDomainName",
        "connector.authentication.username":"user1@force.com",
        "connector.authentication.password":"abcdef1234",
        "ingestionType":"incremental",
        "writeMode":"WRITE_MODE_UPSERT",
        "watermarkColumns":["SystemModstamp","CreatedDate"]
        "primaryKeys":[['Id'], ['master_label','type']]}'

API

Utilisez la méthode projects.locations.transferConfigs.create et fournissez une instance de la ressource TransferConfig.

Lorsque vous enregistrez la configuration du transfert, le connecteur Salesforce déclenche automatiquement une exécution du transfert en fonction de l'option de planification que vous avez choisie. À chaque exécution du transfert, le connecteur Salesforce transfère toutes les données disponibles de Salesforce vers BigQuery.

Pour exécuter manuellement un transfert de données en dehors de votre calendrier habituel, vous pouvez lancer une exécution de remplissage.

Mappage des types de données

Le tableau suivant mappe les types de données Salesforce aux types de données BigQuery correspondants :

Type de données Salesforce Type de données BigQuery
_bool BOOLEAN
_int INTEGER
_long INTEGER
_double FLOAT
currency FLOAT
percent FLOAT
geolocation (latitude) FLOAT
geolocation (longitude) FLOAT
date DATE
datetime TIMESTAMP
time TIME
picklist STRING
multipicklist STRING
combobox STRING
reference STRING
base64 STRING
textarea STRING
phone STRING
id STRING
url STRING
email STRING
encryptedstring STRING
datacategorygroupreference STRING
location STRING
address STRING
anyType STRING

Tarifs

Pour en savoir plus sur les tarifs des transferts Salesforce, consultez Tarifs du service de transfert de données.

Résoudre les problèmes liés à la configuration d'un transfert

Si vous rencontrez des problèmes lors de la configuration de votre transfert de données, consultez la section Problèmes de transfert Salesforce.

Étapes suivantes