Cargar datos de Salesforce en BigQuery

Puede cargar datos de su cuenta de Salesforce Sales en BigQuery mediante el conector de BigQuery Data Transfer Service para Salesforce. Con BigQuery Data Transfer Service, puede programar tareas de transferencia periódicas que añadan los datos más recientes de su cuenta de Salesforce Sales 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 Bulk de Salesforce. Es posible que algunos campos que se incluían en versiones anteriores de la API Bulk de Salesforce no sean compatibles. Para obtener más información sobre estos cambios en el conector de Salesforce, consulte la API Bulk de Salesforce.
  • El conector de Salesforce usa la API Bulk V1 de Salesforce para conectarse al endpoint de Salesforce y recuperar datos.
  • El conector de Salesforce no admite la transferencia de los siguientes objetos que tienen campos binarios.
    • Attachment
    • ContentVersion
    • Document
    • StaticResource
    • Scontrol
    • EmailCapture
    • MailMergeTemplate
  • El intervalo mínimo entre transferencias de datos periódicas es de 15 minutos. El intervalo predeterminado de una transferencia periódica es de 24 horas.
  • Debido a los límites de procesamiento de Salesforce, programar demasiadas transferencias de datos a la vez puede provocar retrasos 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 tengas más de 10 transferencias simultáneas en curso a la vez en tus distintas configuraciones de transferencia.
  • Una configuración de transferencia solo puede admitir una ejecución de transferencia de datos a la vez. Si se programa una segunda transferencia de datos para que se ejecute antes de que se complete la primera, solo se completará la primera transferencia de datos y se omitirán las demás transferencias de datos que se solapen con la primera.
    • Para evitar que se omitan transferencias en una misma configuración de transferencia, le recomendamos que aumente el tiempo que transcurre entre las transferencias de grandes cantidades de datos configurando la frecuencia de repetición.
  • Si la vinculación de red y la instancia de máquina virtual (VM) que has configurado se encuentran en regiones diferentes, puede que se produzca un 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 ingesta incremental solo se admite en los recursos que tienen columnas de marca 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 ingesta incremental o completa.
  • No puedes actualizar los objetos de la lista asset después de la primera ejecución de la ingesta incremental.
  • No puedes cambiar el modo de escritura en una configuración de transferencia después de la primera ejecución de la ingestión incremental.
  • No puede cambiar la columna de marca de agua ni la clave principal después de la primera ejecución de la ingestión incremental.

Opciones de ingestión de datos

En las siguientes secciones se ofrece más información sobre las opciones de ingestión de datos al configurar una transferencia de datos de Salesforce.

Transferencias completas o incrementales

Puedes especificar cómo se cargan los datos en BigQuery seleccionando la preferencia de escritura Completa o Incremental en la configuración de la transferencia al configurar una transferencia de Salesforce. Las transferencias incrementales están disponibles en versión preliminar.

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

También puedes seleccionar Incremental (Vista previa) para transferir solo los datos que se hayan modificado desde la última transferencia de datos, en lugar de cargar todo el conjunto de datos con cada transferencia. Si selecciona Incremental (Incremental) para la transferencia de datos, debe especificar los modos de escritura Append (Añadir) o Upsert (Insertar o actualizar) 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 añadir

El modo de escritura Añadir solo inserta filas nuevas en la tabla de destino. Esta opción añade estrictamente los datos transferidos sin comprobar si hay registros, por lo que este modo puede provocar que se dupliquen los datos en la tabla de destino.

Si seleccionas el modo Añadir, debes elegir una columna de marca de agua. El conector de Salesforce necesita una columna de marca de agua para monitorizar los cambios en la tabla de origen.

En el caso de las transferencias de Salesforce, le recomendamos que seleccione 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 comprobando si hay una clave principal. Puedes especificar una clave principal para que el conector de Salesforce determine qué cambios se necesitan para mantener tu tabla de destino actualizada con tu tabla de origen. Si la clave principal especificada está presente en la tabla de BigQuery de destino durante una transferencia de datos, el conector de Salesforce actualiza esa fila con los datos nuevos de la tabla de origen. Si no hay ninguna clave principal durante una transferencia de datos, el conector de Salesforce inserta una fila nueva.

Si selecciona el modo Upsert, debe elegir una columna de marca de agua y una clave principal:

  • El conector de Salesforce necesita una columna de marca de agua para monitorizar 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 principal puede ser una o varias columnas de la tabla que sean necesarias para que el conector de Salesforce determine si debe insertar o actualizar una fila.
    • Seleccione las columnas que contengan valores no nulos que sean únicos en todas las filas de la tabla. Le recomendamos que incluya columnas con 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 posibles pérdidas o daños de datos, las columnas de clave principal que selecciones deben tener valores únicos. Si tienes dudas sobre la unicidad de la columna de clave principal que has elegido, te recomendamos que uses el modo de escritura Añadir.

Antes de empezar

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

Crear una aplicación conectada de Salesforce

Debe crear una aplicación conectada de Salesforce con las siguientes configuraciones obligatorias:

  • Configura la información básica en la aplicación conectada. Los campos Nombre de la aplicación conectada y Correo de contacto son obligatorios para realizar una transferencia a Salesforce.
  • Habilita los ajustes de OAuth con las siguientes configuraciones:
    • Seleccione la casilla Habilitar ajustes de OAuth.
    • En el campo URL de retrollamada, introduce lo siguiente:
      • En un entorno de producción, introduce https://login.salesforce.com/services/oauth2/token.
      • Para un entorno aislado, introduce https://test.salesforce.com/services/oauth2/token.
    • Comprueba que la casilla Emitir tokens de acceso basados en JSON Web Token(JWT) para usuarios con nombre no esté marcada.
  • En la sección Permisos de OAuth seleccionados, selecciona Gestionar datos de usuario mediante APIs (api).
  • Desmarca la casilla Required Proof Key for Code Exchange (PKCE) Extension for Supported Authorization Flows (Extensión de clave de prueba obligatoria para el intercambio de código [PKCE] para los flujos de autorización admitidos).
  • Selecciona Habilitar flujo de credenciales de cliente y, a continuación, haz clic en Aceptar en el aviso que aparece.

Una vez que hayas configurado la aplicación conectada con las configuraciones necesarias, haz clic en Guardar. Se te redirigirá a la página de detalles de la aplicación conectada que acabas de crear.

Una vez que hayas creado la aplicación conectada, también debes configurar el flujo de credenciales de cliente. Para ello, sigue estos pasos:

  1. Haz clic en Configurar.
  2. En la barra de búsqueda, busca Aplicaciones conectadas.
  3. Haz clic en Gestionar aplicaciones > Aplicaciones conectadas. Si usas Salesforce Lightning Experience, haz clic en Gestionar aplicaciones conectadas.
  4. En la aplicación conectada que has creado, haz clic en Editar.
  5. Aparecerá la página Detalles de la aplicación. En la sección Flujo de credenciales de cliente, introduce tu nombre de usuario en el campo Ejecutar como. Puedes usar la herramienta de búsqueda en este campo para asegurarte de que has seleccionado el usuario correcto.
  6. Haz clic en Guardar.

Información obligatoria de Salesforce

Debes tener la siguiente información de Salesforce al crear una transferencia de datos 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 de cliente de OAuth o secreto de 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

Recuperar los detalles de myDomain

Para encontrar tu myDomain, sigue estos pasos:

  1. Inicia sesión en la plataforma de Salesforce.
  2. Haz clic en Configurar.
  3. En la barra de búsqueda, busca Mi dominio.
  4. En los resultados de búsqueda, haz clic en Gestión de dominios > Mi dominio.

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

Recuperar los detalles de ClientId y ClientSecret

Para encontrar los valores de ClientId y ClientSecret, siga estos pasos:

  1. Inicia sesión en la plataforma Salesforce.
  2. Haz clic en Configurar.
  3. En la barra de búsqueda, busca Aplicaciones.
  4. En la sección Crear de los resultados de búsqueda, haz clic en Crear > Aplicaciones.
  5. Haz clic en el nombre de la aplicación conectada.
  6. En la página de detalles de Aplicaciones conectadas, haz clic en Gestionar detalles del consumidor.
  7. Verifica tu identidad mediante 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 pida que vuelvas a verificar tu identidad.
  8. En la página Consumer Details (Detalles del consumidor), la Consumer Key (Clave del consumidor) es tu valor ClientId. El secreto de cliente es tu valor de ClientSecret.

Salesforce Lightning Experience

Recuperar los detalles de myDomain

Para encontrar tu myDomain, sigue estos pasos:

  1. Inicia sesión en la plataforma de Salesforce.
  2. Haz clic en Configurar.

Abre la página Configuración en la plataforma Salesforce.

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

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

Consultar los detalles de ClientId y ClientSecret

  1. Inicia sesión en la plataforma Salesforce.
  2. Haz clic en Configurar.
  3. En la barra de búsqueda, busca Aplicaciones.
  4. En los resultados de búsqueda, haz clic en Aplicaciones > Gestor de aplicaciones.
  5. Busca una aplicación conectada y haz clic en Ver.
  6. Haz clic en Gestionar detalles del consumidor.
  7. Verifica tu identidad mediante 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 pida que vuelvas a verificar tu identidad.
  8. En la página Consumer Details (Detalles del consumidor), la Consumer Key (Clave del consumidor) es tu valor ClientId. El secreto de cliente es tu valor de ClientSecret.

Configurar una lista de IPs permitidas para las transferencias de Salesforce

Debe configurar su Google Cloud entorno y su cuenta de Salesforce para añadir direcciones IP específicas a la lista de permitidas para las transferencias de datos. De esta forma, Salesforce solo acepta conexiones de una dirección IP estática y de confianza.

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

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

A continuación, debes configurar los intervalos de IPs de confianza en Salesforce. Cuando añadas el intervalo de direcciones IP, utiliza la dirección IP estática de tuGoogle Cloud NAT público para las direcciones IP inicial y final del intervalo de IP.

Una vez que hayas configurado los intervalos de IP, podrás especificar la IP estática al configurar la transferencia seleccionando la conexión de red en el campo Conexión de red.

Requisitos previos de BigQuery

Roles de BigQuery necesarios

Para obtener los permisos que necesitas para crear una transferencia de datos de BigQuery Data Transfer Service, pide a tu administrador que te asigne el rol de gestión de identidades y accesos Administrador de BigQuery (roles/bigquery.admin) en tu proyecto. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene los permisos necesarios para crear una transferencia de datos de BigQuery Data Transfer Service. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:

Permisos obligatorios

Para crear una transferencia de datos de BigQuery Data Transfer Service, se necesitan los siguientes permisos:

  • Permisos de BigQuery Data Transfer Service:
    • 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 u otros roles predefinidos.

Para obtener más información, consulta Conceder acceso a bigquery.admin.

Configurar una transferencia de datos de Salesforce

Añada datos de Salesforce a BigQuery configurando una transferencia con una de las siguientes opciones:

Consola

  1. Ve a la página Transferencias de datos de 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, elija Salesforce.

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

    • En Adjunto de red, selecciona un adjunto de red de la lista. Para obtener más información, consulta Configurar una lista de direcciones IP permitidas para las transferencias de Salesforce.
    • En Mi dominio, introduce tu Mi dominio de Salesforce.
    • En ID de cliente, introduzca la clave de consumidor de la aplicación conectada de Salesforce.
    • En Secreto de cliente, introduzca el secreto del consumidor de la aplicación conectada de Salesforce.
    • En Tipo de ingestión, selecciona Completa o Incremental.
    • Para transferir objetos de Salesforce, haz clic en Buscar:
      • Seleccione los objetos que quiera transferir al conjunto de datos de destino de BigQuery. También puede introducir manualmente los objetos que quiera incluir en la transferencia de datos en este campo.
      • Si ha seleccionado Añadir como modo de escritura incremental, debe seleccionar una columna como columna de marca de agua.
      • Si ha seleccionado Upsert como modo de escritura incremental, debe seleccionar una columna como columna de marca de agua y, a continuación, seleccionar una o varias columnas como clave principal.
  5. En la sección Configuración de destino, en Conjunto de datos, elija el conjunto de datos que haya creado para almacenar sus datos.

  6. En la sección Nombre de la configuración de transferencia, en Nombre visible, indica un nombre para la transferencia de datos.

  7. En la sección Opciones de programación:

    • En la lista Frecuencia de repetición, selecciona una opción para especificar con qué frecuencia se ejecuta esta transferencia de datos. Para especificar una frecuencia de repetición personalizada, seleccione Personalizada. Si seleccionas Bajo demanda, la transferencia se realizará cuando la inicies manualmente.
    • Si procede, selecciona Empezar ahora o Empezar a una hora determinada y proporciona una fecha de inicio y un tiempo de ejecución.
  8. Opcional: En la sección Opciones de notificación, haz lo siguiente:

    • Para habilitar las notificaciones por correo, haz clic en el interruptor Notificación por correo. Si habilitas esta opción, el administrador de las transferencias recibirá una notificación por correo cuando falle una ejecución de transferencia.
    • Para habilitar las notificaciones de Pub/Sub sobre la transferencia, haz clic en el interruptor 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

Introduce el comando bq mk y proporciona la marca de creación de transferencia --transfer_config:

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

Donde:

  • PROJECT_ID (opcional): su ID de proyecto. Google Cloud Si no se proporciona --project_id para especificar un proyecto concreto, se usará 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 si necesitas modificarla más adelante.
  • DATASET: el conjunto de datos de destino de la configuración de la transferencia.
  • PARAMETERS: los parámetros de la configuración de la transferencia creada en formato JSON. Por ejemplo: --params='{"param":"param_value"}'. Estos son los parámetros de 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: secreto de cliente de OAuth o secreto de consumidor de la aplicación conectada de Salesforce.
    • connector.authentication.oauth.myDomain: el dominio Mi de Salesforce. Por ejemplo, si la URL de su dominio es example.my.salesforce.com, el valor es example.
    • ingestionType: especifica FULL o INCREMENTAL. Las transferencias incrementales se admiten en 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 las columnas de la tabla como columnas de marca de agua. Este campo es obligatorio para las transferencias incrementales.
    • primaryKeys: especifica las columnas de la tabla como claves principales. Este campo es obligatorio para las transferencias incrementales.
    • assets: la ruta a los objetos de Salesforce que se van a transferir 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 proporciona una instancia del recurso TransferConfig.

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

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

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 los precios de Data Transfer Service.

Solucionar problemas de configuración de transferencias

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

Siguientes pasos