Origen por lotes de Salesforce

En esta página, se describe cómo cargar datos desde sObjects de Salesforce en Google Cloudcon Cloud Data Fusion. El complemento de origen por lotes de Salesforce lee sObjects de Salesforce. Los sObjects son las tablas de Salesforce de las que planeas extraer datos. Algunos ejemplos de sObjects incluyen oportunidades, contactos, cuentas, clientes potenciales y objetos personalizados.

El complemento de fuente por lotes de Salesforce admite la lectura de datos con consultas del lenguaje de consultas de objetos de Salesforce (SOQL) y filtros de fecha incrementales o de rango.

Antes de comenzar

Cómo configurar el complemento

  1. Ve a la interfaz web de Cloud Data Fusion y haz clic en Studio.
  2. Verifica que esté seleccionada la opción Data Pipeline - Batch (no Realtime).
  3. En el menú Source, haz clic en Salesforce. El nodo de Salesforce aparecerá en tu canalización. Si no ves la fuente de Salesforce en la página Studio, implementa los complementos de Salesforce desde Cloud Data Fusion Hub.
  4. Para configurar la fuente, ve al nodo de Salesforce y haz clic en Properties.
  5. Ingresa las siguientes propiedades. Para obtener una lista completa, consulta Propiedades.

    1. Ingresa una Etiqueta para el nodo de Salesforce, por ejemplo, Salesforce tables.
    2. Ingresa un Nombre de referencia para la fuente de Salesforce para el linaje, por ejemplo, Salesforce tables.
    3. Ingresa los detalles de la conexión. Puedes configurar una conexión nueva y única, o una conexión existente y reutilizable.

      Nueva conexión

      Para agregar una conexión única a Salesforce, sigue estos pasos:

      1. Mantén desactivada la opción Usar conexión.
      2. En la sección Conexión, ingresa la siguiente información de la cuenta de Salesforce en estos campos:

        • Nombre de usuario
        • Contraseña
        • Token de seguridad
        • Clave de consumidor
        • Secreto de consumidor

        Para obtener las credenciales de Salesforce, consulta Cómo obtener propiedades de Salesforce.

      Conexión reutilizable

      Para reutilizar una conexión existente, sigue estos pasos:

      1. Activa Usar conexión.
      2. Haz clic en Browse connections.
      3. Haz clic en el nombre de la conexión.

      4. Opcional: Si no existe una conexión y quieres crear una nueva conexión reutilizable, haz clic en Agregar conexión y consulta los pasos de la pestaña Nueva conexión.

    4. Ingresa el nombre del SObject para cargar todas las columnas del objeto.

    5. Opcional: Si seleccionas el nombre del sObject, puedes filtrar los datos con los siguientes campos:

      • Última modificación posterior a: Solo incluye los registros que se modificaron por última vez después de un momento determinado.
      • Modificado antes del: Solo incluye los registros que se modificaron por última vez antes de una hora determinada.
      • Duración: Solo incluye los registros que se modificaron por última vez dentro de un período de la duración especificada.
      • Desplazamiento: Solo incluye registros en los que la fecha de modificación sea anterior a la hora de inicio lógica de la canalización, menos el desplazamiento determinado.
    6. Opcional: Para los sObjects compatibles, activa Habilitar la fragmentación de PK para mejorar el rendimiento de una canalización. Para obtener más información, consulta Mejora el rendimiento con la división en fragmentos de PK.

    7. Opcional: En lugar de especificar el nombre del sObject, puedes ingresar una consulta SOQL, como SELECT LastName from Contact. Para obtener más información, consulta Consultas de SOQL para la fuente de Salesforce.

    8. Para probar la conectividad, haz clic en Obtener esquema. Cloud Data Fusion se conecta a Salesforce y extrae el esquema de la tabla que se indica (técnicamente, un sObject).

Propiedades

Propiedad Se habilitó la macro Propiedad obligatoria Descripción
Nombre de la referencia No Se usa para identificar de forma única esta fuente para tareas, como el linaje y la anotación de metadatos.
Usar conexión No No Usar una conexión existente Si se usa una conexión, no es necesario que proporciones las credenciales.
Explorar conexiones No Nombre de la conexión que se usará.
Nombre de usuario Nombre de usuario de Salesforce.
Contraseña Contraseña de Salesforce.
Token de seguridad No Es el token de seguridad de Salesforce. Si la contraseña no contiene el token de seguridad, la app de Cloud Data Fusion lo agrega antes de autenticarse con Salesforce.
Clave de consumidor Es la clave de consumidor de la aplicación. También se conoce como ID de cliente de OAuth. Para obtener una clave de consumidor, crea una aplicación conectada de Salesforce.
Secreto de consumidor Es el secreto del consumidor de la aplicación. También se denomina secreto del cliente de OAuth. Para obtener un secreto del cliente, crea una aplicación conectada de Salesforce.
URL de acceso Es la URL de acceso de OAuth2 de Salesforce.
El valor predeterminado es https://login.salesforce.com/services/oauth2/token
Tiempo de espera de la conexión No Tiempo máximo, en milisegundos, que se espera para la inicialización de la conexión antes de que se agote el tiempo.
El valor predeterminado es de 30,000 milisegundos.
URL de proxy No Es la URL del proxy, que contiene un protocolo, una dirección y un puerto.
SOQL No Es una consulta de SOQL para recuperar datos en la fuente.
Ejemplos:
  • SELECT Id, Name, BillingCity FROM Account
  • SELECT Id FROM Contact WHERE Name LIKE 'A%' AND MailingCity = 'California'
Nombre del objeto de Salesforce No Nombre del objeto de Salesforce que se leerá. Si se proporciona un valor, el conector obtiene todos los campos de este objeto de Salesforce y genera una consulta SOQL, como select FIELD_1, FIELD_2 from ${sObjectName}. Se ignora si se proporciona una consulta de SOQL.
También hay sObjects que no son compatibles con la API masiva de Salesforce. Si creas un trabajo con un objeto no admitido, se producirá el siguiente error: Entity is not supported by the Bulk API. Estos objetos tampoco son compatibles con Einstein Analytics, que usa la API de Bulk para consultar datos.
Casos en los que no se usa la API masiva: Cuando la longitud de la búsqueda envía la búsqueda a Salesforce para recibir el array de información de lotes, no se usa la API masiva en un caso. Si la búsqueda está dentro del límite, se ejecuta la búsqueda original. De lo contrario, cambia a la lógica de objeto ancho. Por ejemplo, genera una consulta de ID que solo recupera información de lotes para los IDs que se usarán más adelante para recuperar datos a través de la API de SOAP.
Última modificación después del No Filtrar los datos para incluir solo los registros en los que el campo del sistema, LastModifiedDate, sea mayor o igual que la fecha especificada Usa el formato de fecha de Salesforce (consulta los ejemplos). Si no se proporciona ningún valor, no se aplica ninguna fecha de límite inferior.
Última modificación antes del No Filtrar los datos para incluir solo los registros en los que el campo del sistema, LastModifiedDate, sea anterior a la fecha especificada Usa el formato de fecha de Salesforce (consulta los ejemplos). Si especificas este valor con la propiedad Last modified after, puedes leer los datos que se modificaron dentro de un período. Si no se proporciona ningún valor, no se aplica ninguna fecha límite superior.
Duración No Filtra los datos para leer solo los registros que se modificaron por última vez dentro de un período de tiempo del tamaño especificado. Por ejemplo, si la duración es 6 hours y la canalización se ejecuta a las 9 a.m., leerá los datos que se actualizaron por última vez entre las 3 a.m. (inclusive) y las 9 a.m. (exclusive). Especifica la duración con números y las siguientes unidades de tiempo:
  • seconds
  • minutes
  • hours
  • days
  • months
  • years
Se pueden especificar varias unidades, pero cada unidad solo se puede usar una vez. Por ejemplo, 2 days, 1 hours, 30 minutes. Si ya se especificó un valor para Last modified after o Last modified before, se ignorará la duración.
Desplazamiento No Filtrar los datos para leer solo los registros en los que el campo del sistema, LastModifiedDate, sea anterior a la hora de inicio lógica de la canalización, menos el desplazamiento determinado Por ejemplo, si la duración es 6 hours, el desplazamiento es 1 hours y la canalización se ejecuta a las 9 a.m., se leen los datos que se modificaron por última vez entre las 2 a.m. (inclusive) y las 8 a.m. (exclusive).
Especifica la duración con números y las siguientes unidades de tiempo:
  • seconds
  • minutes
  • hours
  • days
  • months
  • years
Se pueden especificar varias unidades, pero cada unidad solo se puede usar una vez. Por ejemplo, 2 days, 1 hours, 30 minutes. Si ya se especificó un valor para Last modified after o Last modified before, se ignorará el desplazamiento.
Tipo de operación de SOQL No No Especifica la operación de consulta que se ejecutará en la tabla. Si se selecciona una consulta, solo se devuelven los registros actuales. Si seleccionas queryAll, se devuelven todos los registros actuales y borrados.
La operación predeterminada es query.
Habilita la división en fragmentos de PK No La división de claves primarias (PK) divide una consulta en tablas grandes en partes o fragmentos según los IDs de registro, o claves primarias, de los registros consultados.
Salesforce recomienda que habilites la fragmentación de PK cuando consultes tablas con más de 10 millones de registros o cuando una consulta masiva agote el tiempo de espera de forma constante. Para obtener más información, consulta Fragmentación de PK. La división en fragmentos de PK solo funciona con consultas que no incluyen cláusulas SELECT ni condiciones que no sean WHERE. La división en fragmentos se admite para los objetos personalizados y cualquier tabla de uso compartido y de historial que admita objetos estándar.
Tamaño del fragmento No Especifica el tamaño del fragmento. El tamaño máximo es de 250,000. El tamaño predeterminado es 100,000.
Nombre del objeto principal de SObject No Es el elemento principal del objeto de Salesforce. Se usa para habilitar la fragmentación de tablas de historial o de objetos compartidos.

Ejemplos de formatos de fecha de Salesforce

Sintaxis del formato Ejemplo
YYYY-MM-DDThh:mm:ss+hh:mm 1999-01-01T23:01:01+01:00
YYYY-MM-DDThh:mm:ss-hh:mm 1999-01-01T23:01:01-08:00
YYYY-MM-DDThh:mm:ssZ 1999-01-01T23:01:01Z

Asignaciones de tipos de datos

En la siguiente tabla, se incluye una lista de los tipos de datos de Salesforce con los tipos de CDAP correspondientes.

Tipo de datos de Salesforce Tipo de datos del esquema de CDAP
_bool boolean
_int int
_long long
_double, currency, percent, geolocation (latitud), geolocation (longitud) double
date date
datetime timestamp (microsegundos)
time time (microsegundos)
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
json string
complexvalue string

Casos de uso

Consulta los siguientes casos de uso de la fuente por lotes de Salesforce:

Requisitos previos para actualizar a la versión 1.7.0 del complemento de Salesforce

La versión 1.7.0 del complemento de Salesforce está disponible en la versión 6.8.0 y posteriores de Cloud Data Fusion. En esta versión, se actualizó la versión 1 de la API de Bulk de Salesforce de la versión 62.0 a la 64.0.

Salesforce dejó de usar ciertos campos en la versión 64.0 de la API. La actualización a la versión 1.7.0 del complemento de Salesforce podría provocar errores en las canalizaciones que usan estos campos. Para asegurarte de que tus canalizaciones sigan funcionando, actualiza manualmente el esquema de la canalización para cargar un esquema nuevo o quitar los campos obsoletos.

Campos obsoletos en la versión 64.0 de la API de Salesforce

Salesforce dejó de admitir los siguientes campos en la versión 64.0 de la API:

Nombre del objeto Nombres de campos
MobSecurityCertPinConfig EffectiveDate
Perfil PermissionsAllowObjectDetectionTraining
PermissionsAllowObjectDetection
PermissionSet PermissionsAllowObjectDetectionTraining
PermissionsAllowObjectDetection
PermissionSetLicense MaximumPermissionsAllowObjectDetectionTraining
MaximumPermissionsAllowObjectDetection
UserPermissionAccess PermissionsAllowObjectDetectionTraining
PermissionsAllowObjectDetection
MutingPermissionSet PermissionsAllowObjectDetectionTraining
PermissionsAllowObjectDetection
Dominio OptionsHstsHeaders
Usuario UserPreferencesHideInvoicesRedirectConfirmation
UserPreferencesHideStatementsRedirectConfirmation
UserChangeEvent UserPreferencesHideInvoicesRedirectConfirmation
UserPreferencesHideStatementsRedirectConfirmation

Actualiza el esquema de la canalización

Si tu canalización usa campos obsoletos, actualiza el esquema de la canalización cargando un esquema nuevo o quitando los campos obsoletos:

  1. Ve a la interfaz web de Cloud Data Fusion y haz clic en Lista.

  2. Para ver las canalizaciones implementadas, haz clic en la pestaña Implementadas.

  3. En el canal que deseas actualizar, haz clic en > Editar.

  4. En la vista Studio, mantén el puntero sobre el complemento de origen de Salesforce y haz clic en Properties.

    Se abrirá la ventana de configuración del complemento de Salesforce.

  5. Para cargar un esquema nuevo, sigue estos pasos:

    1. En la pestaña Esquema de salida, haz clic en > Borrar y, luego, en Validar. Esto carga el esquema más reciente de Salesforce.

    2. Después de que se cargue el esquema, en la pestaña Esquema de salida, haz clic en > Propagar.

      Esto actualiza automáticamente el esquema de todos los complementos posteriores en la canalización, lo que podría anular los cambios manuales del esquema en complementos como Wrangler.

  6. Para quitar manualmente los campos obsoletos, sigue este paso:

    1. En la pestaña Esquema de salida, haz clic en para cada uno de los campos obsoletos. Esto quita los campos de todas las etapas posteriores.

Prácticas recomendadas

Para obtener más información sobre cómo mejorar el rendimiento en la fuente de procesamiento por lotes de Salesforce, consulta las prácticas recomendadas.

¿Qué sigue?