Carga datos de Salesforce en BigQuery

Puedes cargar datos de tu cuenta de ventas de Salesforce en BigQuery con el conector del Servicio de transferencia de datos de BigQuery para Salesforce. Con el Servicio de transferencia de datos de BigQuery, puedes programar trabajos de transferencia recurrentes que agreguen tus datos más recientes de tu cuenta de ventas de Salesforce a BigQuery.

Limitaciones

Las transferencias de datos de Salesforce están sujetas a las siguientes limitaciones:

  • El conector de Salesforce solo admite transferencias desde una cuenta de ventas de Salesforce.
  • El conector de Salesforce solo admite los campos incluidos en la versión 64.0 de la API masiva de Salesforce V1. Es posible que algunos campos incluidos en versiones anteriores de la API masiva de Salesforce no sean compatibles. Para obtener más información sobre estos cambios en el conector de Salesforce, consulta la API de Bulk de Salesforce.
  • El conector de Salesforce usa la API de Salesforce Bulk V1 para conectarse al extremo de Salesforce y recuperar datos.
    • El conector de Salesforce solo admite la API masiva de Salesforce V1 para conectarse a la instancia de Salesforce y solo admite la transferencia de entidades compatibles con la API masiva de Salesforce. Para obtener más información sobre qué entidades son compatibles, consulta “La entidad no es compatible con el error de la API masiva”.
  • El conector de Salesforce no admite la transferencia de los siguientes objetos que tienen campos binarios.
    • Attachment
    • ContentVersion
    • Document
    • StaticResource
    • Scontrol
    • EmailCapture
    • MailMergeTemplate
  • El tiempo de intervalo mínimo entre transferencias de datos recurrentes es de 15 minutos. El intervalo predeterminado para una transferencia recurrente es de 24 horas.
  • Debido a los límites de procesamiento de Salesforce, programar demasiadas transferencias de datos a la vez puede provocar demoras o errores. Te recomendamos que limites las transferencias de datos de Salesforce a lo siguiente:
    • No tener más de 10 recursos por configuración de transferencia
    • No ejecutes más de 10 transferencias simultáneas a la vez en tus diferentes configuraciones de transferencia.
  • Una sola configuración de transferencia solo puede admitir una ejecución de transferencia de datos en un momento determinado. En el caso de que se programe una segunda transferencia de datos para que se ejecute antes de que se complete la primera, solo se completará la primera transferencia de datos, mientras que se omitirán las demás transferencias de datos que se superpongan con la primera.
    • Para evitar que se omitan transferencias dentro de una misma configuración de transferencia, te recomendamos que aumentes la duración del tiempo entre las transferencias de datos grandes configurando la Frecuencia de repetición.
  • Si la conexión de red configurada y la instancia de máquina virtual (VM) se encuentran en regiones diferentes, es posible que haya movimiento de datos entre regiones cuando transfieras datos desde Salesforce.

Limitaciones de la transferencia incremental

Las transferencias incrementales de Salesforce están sujetas a las siguientes limitaciones:

  • Solo puedes elegir TIMESTAMP columnas como columnas de marca de agua.
  • La transferencia incremental solo se admite para los recursos con columnas de marcas de agua válidas.
  • Los valores de una columna de marca de agua deben aumentar de forma monótona.
  • Las transferencias incrementales no pueden sincronizar las operaciones de eliminación en la tabla de origen.
  • Una sola configuración de transferencia solo puede admitir la transferencia incremental o completa.
  • No puedes actualizar los objetos de la lista asset después de la primera ejecución de la incorporación incremental.
  • No puedes cambiar el modo de escritura en una configuración de transferencia después de la primera ejecución de la transferencia incremental.
  • No puedes cambiar la columna de marca de agua ni la clave primaria después de la primera ejecución de la transferencia incremental.

Opciones de transferencia de datos

En las siguientes secciones, se proporciona más información sobre las opciones de transferencia de datos cuando configuras una transferencia de datos de Salesforce.

Transferencias completas o incrementales

Para especificar cómo se cargan los datos en BigQuery, selecciona la preferencia de escritura Completa o Incremental en la configuración de transferencia cuando configures una transferencia de Salesforce. Las transferencias incrementales son compatibles con la versión preliminar.

Puedes seleccionar Completa para transferir todos los datos de tus conjuntos de datos de Salesforce con cada transferencia de datos.

Como alternativa, puedes seleccionar Incremental (Vista previa) para transferir solo los datos que se modificaron desde la última transferencia de datos, en lugar de cargar todo el conjunto de datos con cada transferencia. Si seleccionas Incremental para tu transferencia de datos, debes especificar los modos de escritura Anexar o Upsert para definir cómo se escriben los datos en BigQuery durante una transferencia de datos incremental. En las siguientes secciones, se describen los modos de escritura disponibles.

Modo de escritura Append

El modo de escritura Append solo inserta filas nuevas en tu tabla de destino. Esta opción agrega estrictamente los datos transferidos sin verificar si existen registros, por lo que este modo puede provocar la duplicación de datos en la tabla de destino.

Cuando seleccionas el modo Append, debes seleccionar una columna de marca de agua. Se requiere una columna de marca de agua para que el conector de Salesforce haga un seguimiento de los cambios en la tabla fuente.

En el caso de las transferencias de Salesforce, te recomendamos que selecciones una columna que solo se actualice cuando se cree el registro y que no cambie con las actualizaciones posteriores. Por ejemplo, la columna CreatedDate.

Modo de escritura Upsert

El modo de escritura Upsert actualiza una fila o inserta una nueva en la tabla de destino verificando si hay una clave primaria. Puedes especificar una clave primaria para permitir que el conector de Salesforce determine qué cambios son necesarios para mantener tu tabla de destino actualizada con tu tabla de origen. Si la clave primaria especificada está presente en la tabla de BigQuery de destino durante una transferencia de datos, el conector de Salesforce actualiza esa fila con datos nuevos de la tabla de origen. Si no hay una clave primaria durante una transferencia de datos, el conector de Salesforce inserta una fila nueva.

Cuando seleccionas el modo Upsert, debes seleccionar una columna de marca de agua y una clave primaria:

  • Se requiere una columna de marca de agua para que el conector de Salesforce haga un seguimiento de los cambios en la tabla de origen.
    • Selecciona una columna de marca de agua que se actualice cada vez que se modifique una fila. Te recomendamos que uses la columna SystemModstamp o LastModifiedDate.
  • La clave primaria puede ser una o más columnas de tu tabla que son necesarias para que el conector de Salesforce determine si necesita insertar o actualizar una fila.
    • Selecciona las columnas que contengan valores no nulos que sean únicos en todas las filas de la tabla. Te recomendamos que incluyas columnas que contengan identificadores generados por el sistema, códigos de referencia únicos (por ejemplo, IDs de incremento automático) o IDs de secuencia inmutables basados en el tiempo.
    • Para evitar la posible pérdida o corrupción de datos, las columnas de clave primaria que selecciones deben tener valores únicos. Si tienes dudas sobre la singularidad de la columna de clave primaria que elegiste, te recomendamos que uses el modo de escritura Append.

Antes de comenzar

En las siguientes secciones, se describen los pasos que debes seguir antes de crear una transferencia de datos de Salesforce.

Crea una app conectada de Salesforce

Debes crear una app conectada de Salesforce con los siguientes parámetros de configuración obligatorios:

  • Configura la información básica en la aplicación conectada. Los campos Nombre de la aplicación conectada y Correo electrónico de contacto son obligatorios para una transferencia de Salesforce.
  • Habilita la configuración de OAuth con la siguiente configuración:
    • Selecciona la casilla de verificación Habilitar configuración de OAuth.
    • En el campo URL, ingresa lo siguiente:
      • Para un entorno de producción, ingresa https://login.salesforce.com/services/oauth2/token.
      • Para un entorno de zona de pruebas, ingresa https://test.salesforce.com/services/oauth2/token.
    • Verifica que la casilla de verificación Issue JSON Web Token(JWT)-based access tokens for named users no esté seleccionada.
  • En la sección Permisos de OAuth seleccionados, selecciona Gestionar datos de usuario mediante APIs (api).
  • Desmarca la casilla de verificación Required Proof Key for Code Exchange (PKCE) Extension for Supported Authorization Flows.
  • Selecciona Habilitar el flujo de credenciales del cliente y, luego, haz clic en Aceptar en el aviso que aparece.

Una vez que hayas configurado la app conectada con los parámetros de configuración necesarios, haz clic en Guardar. Se te redireccionará a la página de detalles de la app conectada que acabas de crear.

Una vez que hayas creado la app conectada, también debes configurar el flujo de credenciales del cliente de la siguiente manera:

  1. Haz clic en Configuración.
  2. En la barra de búsqueda, busca Apps conectadas.
  3. Haz clic en Administrar apps > Apps conectadas. Si usas Salesforce Lightning Experience, haz clic en Administrar apps conectadas.
  4. En la app conectada que creaste, haz clic en Editar.
  5. Aparecerá la página Detalles de la app. En la sección Flujo de credenciales del cliente, ingresa tu nombre de usuario en el campo Ejecutar como. Puedes usar la herramienta de búsqueda en este campo para asegurarte de haber seleccionado el usuario correcto.
  6. Haz clic en Guardar.

Información obligatoria de Salesforce

Cuando crees una transferencia de datos de Salesforce, debes tener la siguiente información de Salesforce:

Nombre del parámetro Descripción
myDomain Tu Mi dominio en Salesforce.
clientId Clave de consumidor de la aplicación conectada de Salesforce.
clientSecret

Secreto del cliente de OAuth o secreto del consumidor de la aplicación conectada de Salesforce.

Para obtener los valores de myDomain, clientID y clientSecret, selecciona una de las siguientes opciones:

Salesforce Classic

Recupera los detalles de myDomain

Para encontrar tu myDomain, haz lo siguiente:

  1. Accede a la plataforma de Salesforce.
  2. Haz clic en Configuración.
  3. En la barra de búsqueda, busca Mi dominio.
  4. En los resultados de la búsqueda, haz clic en Administración de dominios > Mi dominio.

En la sección My Domain Details, tu myDomain aparece como prefijo en Current My Domain URL. Por ejemplo, si la URL de Mi dominio es example.my.salesforce.com, el valor de myDomain que se debe usar es example.

Recupera detalles de ClientId y ClientSecret

Para encontrar tus valores de ClientId y ClientSecret, haz lo siguiente:

  1. Accede a la plataforma de Salesforce.
  2. Haz clic en Configuración.
  3. En la barra de búsqueda, busca Apps.
  4. En la sección Compilar de los resultados de la búsqueda, haz clic en Crear > Apps.
  5. Haz clic en un Nombre de la app conectada.
  6. En la página de detalles de Apps conectadas, haz clic en Administrar detalles del consumidor.
  7. Verifica tu identidad con uno de los métodos registrados. Puedes ver la página de detalles del consumidor durante un máximo de cinco minutos antes de que se te solicite que vuelvas a verificar tu identidad.
  8. En la página Detalles del consumidor, la clave del consumidor es tu valor de ClientId. El secreto del cliente es tu valor de ClientSecret.

Experiencia de Salesforce Lightning

Recupera los detalles de myDomain

Para encontrar tu myDomain, haz lo siguiente:

  1. Accede a la plataforma de Salesforce.
  2. Haz clic en Configuración.

Abre la página de configuración en la plataforma de Salesforce.

  1. En la barra de búsqueda, busca Mi dominio.
  2. En los resultados de la búsqueda, haz clic en Configuración de la empresa > Mi dominio.

En la sección My Domain Details, tu myDomain aparece como prefijo en Current My Domain URL. Por ejemplo, si la URL de Mi dominio es example.my.salesforce.com, el valor de myDomain que se debe usar es example.

Recupera detalles de ClientId y ClientSecret

  1. Accede a la plataforma de Salesforce.
  2. Haz clic en Configuración.
  3. En la barra de búsqueda, busca Apps.
  4. En los resultados de la búsqueda, haz clic en Apps > Administrador de apps.
  5. Busca una app conectada y, luego, haz clic en Ver.
  6. Haz clic en Administrar detalles del consumidor.
  7. Verifica tu identidad con uno de los métodos registrados. Puedes ver la página de detalles del consumidor durante un máximo de cinco minutos antes de que se te solicite que vuelvas a verificar tu identidad.
  8. En la página Detalles del consumidor, la clave del consumidor es tu valor de ClientId. El secreto del cliente es tu valor de ClientSecret.

Configura la lista de IP permitidas para las transferencias de Salesforce

Debes configurar tu entorno Google Cloud y tu cuenta de Salesforce para agregar direcciones IP específicas a la lista de entidades permitidas para las transferencias de datos. Esto garantiza que Salesforce solo acepte conexiones desde una dirección IP estática y de confianza.

Para ello, primero debes configurar tu red Google Cloud para que use una dirección IP estática:

  1. Configura una traducción de direcciones de red (NAT) pública con una dirección IP estática dentro de tu red de nube privada virtual. El CloudNAT debe configurarse en la misma región que el conjunto de datos de destino para esta transferencia de datos.
  2. Configura un adjunto de red dentro de la misma red de VPC. El Servicio de transferencia de datos de BigQuery usa este recurso para acceder a servicios privados.

A continuación, debes configurar los rangos de IP de confianza en Salesforce. Cuando agregues el rango de la dirección IP, usa la dirección IP estática de tuGoogle Cloud NAT pública para las direcciones IP inicial y final del rango de IP.

Una vez que hayas configurado los rangos de IP, podrás especificar la IP estática cuando configures la transferencia seleccionando la vinculación de red en el campo Vinculación de red.

Requisitos previos de BigQuery

Roles de BigQuery requeridos

Para obtener los permisos que necesitas para crear una transferencia de datos de Servicio de transferencia de datos de BigQuery, pídele a tu administrador que te otorgue el rol de IAM de administrador de BigQuery (roles/bigquery.admin) en tu proyecto. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene los permisos necesarios para crear una transferencia de datos del Servicio de transferencia de datos de BigQuery. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:

Permisos necesarios

Se requieren los siguientes permisos para crear una transferencia de datos del Servicio de transferencia de datos de BigQuery:

  • Permisos del Servicio de transferencia de datos de BigQuery:
    • bigquery.transfers.update
    • bigquery.transfers.get
  • Permisos de BigQuery:
    • bigquery.datasets.get
    • bigquery.datasets.getIamPolicy
    • bigquery.datasets.update
    • bigquery.datasets.setIamPolicy
    • bigquery.jobs.create

También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.

Para obtener más información, consulta Cómo otorgar acceso a bigquery.admin.

Configura una transferencia de datos de Salesforce

Agrega datos de Salesforce a BigQuery configurando una transferencia con una de las siguientes opciones:

Console

  1. Ve a la página Transferencia de datos en la Google Cloud consola.

    Ir a Transferencias de datos

  2. Haz clic en Crear transferencia.

  3. En la sección Tipo de fuente, en Fuente, elige Salesforce.

  4. En la sección Detalles de la fuente de datos, haz lo siguiente:

    • En Adjunto de red, selecciona un adjunto de red de la lista. Para obtener más información, consulta Configura la lista de IP permitidas para las transferencias de Salesforce.
    • En Mi dominio, ingresa el Mi dominio de Salesforce.
    • En ID de cliente, ingresa la clave de consumidor de la aplicación conectada de Salesforce.
    • En Secreto del cliente, ingresa el secreto del consumidor de la aplicación conectada de Salesforce.
    • En Ingestion type, selecciona Full o Incremental.
    • En Salesforce objects to transfer, haz clic en Browse:
      • Selecciona los objetos que se transferirán al conjunto de datos de destino de BigQuery. También puedes ingresar de forma manual cualquier objeto que quieras incluir en la transferencia de datos en este campo.
      • Si seleccionaste Append como modo de escritura incremental, debes seleccionar una columna como columna de marca de agua.
      • Si seleccionaste Upsert como modo de escritura incremental, debes seleccionar una columna como columna de marca de agua y, luego, seleccionar una o más columnas como clave primaria.
  5. En la sección Configuración de destino, en Conjunto de datos, elige el conjunto de datos que creaste para almacenar tus datos.

  6. En la sección Nombre de configuración de la transferencia (Transfer config name), en Nombre visible (Display name), ingresa el nombre de la transferencia de datos.

  7. En la sección Opciones de programación, haz lo siguiente:

    • En la lista Frecuencia de repetición, selecciona una opción para especificar la frecuencia con la que se ejecuta esta transferencia de datos. Para especificar una frecuencia de repetición personalizada, selecciona Personalizado. Si seleccionas Según demanda, esta transferencia se ejecuta cuando activas la transferencia de forma manual.
    • Si corresponde, selecciona Comenzar ahora o Comenzar a la hora definida y detalla una fecha de inicio y una hora de ejecución.
  8. Opcional: En la sección Opciones de notificación, haz lo siguiente:

    • Para habilitar las notificaciones por correo electrónico, haz clic en el botón de activar o desactivar Notificación por correo electrónico. Si habilitas esta opción, el administrador de transferencias recibirá una notificación por correo electrónico cuando falle la ejecución de una transferencia.
    • Si quieres habilitar las notificaciones de ejecución de transferencias de Pub/Sub para esta transferencia, haz clic en el botón de activar Notificaciones de Pub/Sub. Puedes seleccionar el nombre del tema o hacer clic en Crear un tema para crear uno.
  9. Haz clic en Guardar.

bq

Ingresa el comando bq mk y suministra la marca de creación de transferencias --transfer_config.

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

Aquí:

  • PROJECT_ID (opcional): Tu ID del proyecto de Google Cloud . Si no se proporciona --project_id para especificar un proyecto en particular, se usa el proyecto predeterminado.
  • DATA_SOURCE: La fuente de datos: salesforce.
  • NAME: el nombre visible de la configuración de transferencia de datos. El nombre de la transferencia puede ser cualquier valor que te permita identificarla con facilidad si es necesario hacerle modificaciones más tarde.
  • DATASET es el conjunto de datos de destino para la configuración de transferencia.
  • PARAMETERS son los parámetros de la configuración de transferencia creada en formato JSON. Por ejemplo: --params='{"param":"param_value"}' Los siguientes son los parámetros para una transferencia de datos de Salesforce:

    • connector.authentication.oauth.clientId: La clave de consumidor de la aplicación conectada de Salesforce.
    • connector.authentication.oauth.clientSecret: El secreto del cliente de OAuth o el secreto del consumidor de la aplicación conectada de Salesforce.
    • connector.authentication.oauth.myDomain: el Mi dominio de Salesforce. Por ejemplo, si la URL de tu dominio es example.my.salesforce.com, el valor es example.
    • ingestionType: Especifica FULL o INCREMENTAL. Las transferencias incrementales son compatibles con la versión preliminar. Para obtener más información, consulta Transferencias completas o incrementales.
    • writeMode: Especifica WRITE_MODE_APPEND o WRITE_MODE_UPSERT.
    • watermarkColumns: Especifica columnas en tu tabla como columnas de marca de agua. Este campo es obligatorio para las transferencias incrementales.
    • primaryKeys: Especifica columnas en tu tabla como claves primarias. Este campo es obligatorio para las transferencias incrementales.
    • assets: la ruta de acceso a los objetos de Salesforce que se transferirán a BigQuery.

Cuando se especifican varios recursos durante una transferencia incremental, los valores de los campos watermarkColumns y primaryKeys corresponden a la posición de los valores en el campo assets. En el siguiente ejemplo, Id corresponde a la tabla Account, mientras que master_label y type corresponden a la tabla CaseHistory.

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

El siguiente comando crea una transferencia de datos incremental de Salesforce en el proyecto predeterminado y usa el modo de escritura 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

Usa el método projects.locations.transferConfigs.create y suministra una instancia del recurso TransferConfig.

Cuando guardas la configuración de transferencia, el conector de Salesforce activa automáticamente una ejecución de transferencia según la opción de programación que elegiste. Con cada ejecución de transferencia, el conector de Salesforce transfiere todos los datos disponibles de Salesforce a BigQuery.

Para ejecutar manualmente una transferencia de datos fuera de tu programa habitual, puedes iniciar una ejecución de reabastecimiento.

Asignación de tipos de datos

En la siguiente tabla, se asignan los tipos de datos de Salesforce a los tipos de datos de BigQuery correspondientes:

Tipo de datos de Salesforce Tipo de datos de 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

Precios

Para obtener información sobre los precios de las transferencias de Salesforce, consulta Precios del Servicio de transferencia de datos.

Soluciona problemas con la configuración de una transferencia

Si tienes problemas para configurar tu transferencia de datos, consulta Problemas de transferencia de Salesforce.

¿Qué sigue?