Carga datos de ServiceNow en BigQuery

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

Limitaciones

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

  • El conector de ServiceNow solo admite la API de la tabla de ServiceNow.
  • No recomendamos ejecutar transferencias de datos simultáneas en la misma instancia de ServiceNow. Esto puede provocar demoras o fallas debido a la carga en la instancia de ServiceNow.
    • Te recomendamos que programes los horarios de inicio de las transferencias con suficiente diferencia para evitar que se superpongan.
  • Para mejorar el rendimiento de la transferencia de datos, te recomendamos que limites la cantidad de recursos a 20 elementos por transferencia.
  • 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.
  • 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.
  • Para usar un adjunto de red con esta transferencia de datos, primero debes crear un adjunto de red definiendo una dirección IP estática.

Limitaciones de la transferencia incremental

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

  • Solo puedes elegir DATETIME 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.
  • La tabla de BigQuery de destino se agrupa con la clave primaria proporcionada y está sujeta a las limitaciones de las tablas agrupadas.
  • Cuando actualizas una configuración de transferencia existente al modo de transferencia incremental por primera vez, la primera transferencia de datos después de esa actualización transfiere todos los datos disponibles de tu fuente de datos. Todas las transferencias de datos incrementales posteriores solo transferirán las filas nuevas y actualizadas de tu fuente de datos.

Opciones de transferencia de datos

En estas secciones, se describen las opciones de transferencia de datos para configurar una transferencia de datos de ServiceNow.

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 ServiceNow. Las transferencias incrementales son compatibles con la versión preliminar.

Puedes configurar una transferencia de datos completa para transferir todos los datos de tus conjuntos de datos de ServiceNow con cada transferencia de datos.

Como alternativa, puedes configurar una transferencia de datos incremental (versión preliminar) para transferir solo los datos que se modificaron desde la última transferencia de datos, en lugar de cargar el conjunto de datos completo con cada transferencia de datos. Si seleccionas Incremental para tu transferencia de datos, debes especificar los modos de escritura Append 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 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 ServiceNow 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 ServiceNow 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 ServiceNow inserta una fila nueva.

Cuando seleccionas el modo de 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 ServiceNow haga un seguimiento de los cambios en la tabla fuente.

    Selecciona una columna de marca de agua que se actualice cada vez que se modifique una fila. Recomendamos columnas similares a la columna UPDATED_AT o LAST_MODIFIED.

  • La clave primaria puede ser una o más columnas de tu tabla que son necesarias para que el conector de ServiceNow 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 la carga completa.

Comportamiento de la transferencia incremental

Cuando realizas cambios en el esquema de la tabla en tu fuente de datos, las transferencias de datos incrementales de esas tablas se reflejan en BigQuery de las siguientes maneras:

Cambios en la fuente de datos Comportamiento de la transferencia incremental
Cómo agregar una columna nueva Se agrega una columna nueva a la tabla de BigQuery de destino. Todos los registros anteriores de esta columna tendrán valores nulos.
Borrar una columna La columna borrada permanece en la tabla de BigQuery de destino. Las entradas nuevas en esta columna borrada se propagan con valores nulos.
Cómo cambiar el tipo de datos en una columna El conector solo admite conversiones de tipos de datos que admite la declaración DDL ALTER COLUMN. Cualquier otra conversión de tipo de datos provocará un error en la transferencia de datos.

Si tienes algún problema, te recomendamos que crees una nueva configuración de transferencia.

Cambiar el nombre de una columna La columna original permanece en la tabla de BigQuery de destino tal como está, mientras que se agrega una columna nueva a la tabla de destino con el nombre actualizado.

Antes de comenzar

Antes de crear una transferencia de datos de ServiceNow, realiza las siguientes acciones para ServiceNow y BigQuery.

Requisitos previos de ServiceNow

  • Para acceder a las APIs de ServiceNow, crea credenciales de OAuth.
  • Todas las aplicaciones de ServiceNow deben estar habilitadas en la instancia de ServiceNow:

  • Para iniciar una transferencia de ServiceNow, debes tener las credenciales correctas para conectarte a la instancia de ServiceNow.

    • Para obtener tus credenciales de una instancia de ServiceNow para desarrolladores, accede al portal de ServiceNow para desarrolladores. Puedes usar el nombre de usuario y la contraseña que se indican en la página Administrar contraseña de la instancia. Para obtener información sobre cómo restablecer tu contraseña de ServiceNow, consulta Restablecimiento de contraseña.
    • Para obtener tus credenciales para una instancia de producción o subproducción de ServiceNow, comunícate con tu administrador de clientes de ServiceNow y solicita el nombre de usuario y la contraseña.

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 ServiceNow

Agrega datos de ServiceNow 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, selecciona ServiceNow.

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

    • (Opcional) En Adjunto de red, selecciona un adjunto de red en el menú desplegable o haz clic en Crear adjunto de red.
      • Selecciona un adjunto de red para configurar esta transferencia de datos de manera que use una dirección IP única y coherente. Puedes utilizar esta opción si tu instancia de ServiceNow está configurada para aceptar tráfico solo desde direcciones IP específicas.
      • Para obtener más información sobre cómo crear un adjunto de red, consulta Configura conexiones con adjuntos de red.
      • Para obtener más información sobre cómo definir direcciones IP en ServiceNow, consulta Define direcciones IP internas permitidas de ServiceNow.
    • En ID de instancia, ingresa el ID de la instancia de ServiceNow. Puedes obtenerlo desde la URL de ServiceNow, por ejemplo, https://INSTANCE_ID.service-now.com.
    • (Opcional) En ServiceNow Cloud Type, selecciona el tipo de nube para tu cuenta de ServiceNow:
      • Selecciona Comercial si la URL de tu instancia de ServiceNow sigue el patrón https://INSTANCE_ID.service-now.com. Este es el valor predeterminado.
      • Selecciona Government Community Cloud (GCC) si la URL de tu instancia de ServiceNow sigue el patrón https://INSTANCE_ID.servicenowservices.com.
    • En Nombre de usuario, ingresa el nombre de usuario de ServiceNow que se usará para la conexión.
    • En Contraseña, ingresa la contraseña de ServiceNow.
    • En ID de cliente, ingresa el ID de cliente de tus credenciales de OAuth. Para generar credenciales, consulta Crea credenciales de OAuth.
    • En Secreto del cliente, ingresa el secreto del cliente de tus credenciales de OAuth.
    • En Enable legacy mapping, selecciona true (predeterminado) para usar la asignación de tipos de datos heredada. Selecciona false para usar la asignación de tipos de datos actualizada. Para obtener más información sobre las actualizaciones de asignación de tipos de datos, consulta 16 de marzo de 2027.
    • En Ingestion type, selecciona Full o Incremental.
    • En Tablas de ServiceNow que se transferirán, haz clic en Explorar:
      • 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 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.
    • En Tipo de valor, elige una de las siguientes opciones:
      • Para transferir los valores almacenados en la base de datos, elige Real.
      • Para transferir los valores de visualización de las columnas, elige Mostrar.
  5. En la sección Configuración de destino, en Conjunto de datos, selecciona 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 Personalizada. Si seleccionas Según demanda, esta transferencia de datos se ejecuta cuando activas la transferencia de forma manual.
    • Si corresponde, selecciona Comenzar ahora o Comenzar a una hora determinada y proporciona 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. Cuando habilitas esta opción, el administrador de transferencias recibe una notificación por correo electrónico cuando falla una ejecución de transferencia.
    • Si quieres habilitar las notificaciones de ejecución de transferencias de Pub/Sub para esta transferencia de datos, 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=DISPLAY_NAME
    --target_dataset=DATASET
    --params='PARAMETERS'

Reemplaza lo siguiente:

  • PROJECT_ID (opcional): Tu ID del proyecto de Google Cloud . Si no se especifica un ID del proyecto, se usa el proyecto predeterminado.
  • DATA_SOURCE: Es la fuente de datos (por ejemplo, servicenow).
  • DISPLAY_NAME es el nombre visible de la configuración de transferencia. El nombre de la transferencia de datos puede ser cualquier valor que te permita identificarla 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 ServiceNow:

    Parámetro ServiceNow Obligatorio u opcional Descripción
    connector.networkAttachment Opcional Nombre de la vinculación de red que se usará para garantizar la conectividad con la instancia de ServiceNow.
    connector.instanceId Obligatorio ID de la instancia de ServiceNow
    connector.authentication.username Obligatorio Nombre de usuario de la instancia de ServiceNow del usuario.
    connector.authentication.password Obligatorio Contraseña para la instancia de ServiceNow del usuario.
    connector.authentication.oauth.clientId Obligatorio Es el ID de cliente para la autenticación de OAuth con la instancia de ServiceNow.
    connector.authentication.oauth.clientSecret Obligatorio Es el secreto del cliente para la autenticación de OAuth con la instancia de ServiceNow.
    connector.instanceCloudType Opcional Especifica el tipo de nube de tu cuenta de ServiceNow. Los valores admitidos son los siguientes:
    • COMMERCIAL_CLOUD, si la URL de tu instancia de ServiceNow sigue el patrón https://INSTANCE_ID.service-now.com
    • GOVERNMENT_COMMUNITY_CLOUD si la URL de tu instancia de ServiceNow sigue el patrón https://INSTANCE_ID.servicenowservices.com
    ingestionType Opcional Define el método para transferir datos desde el ServiceNow de origen al destino, y determina si se realiza una recarga completa del conjunto de datos o una actualización incremental eficiente.
    writeMode Opcional Si se usa la transferencia incremental, determina la estrategia de sincronización para la transferencia incremental, especificando Upsert (se actualiza si existe, se inserta si es nuevo) en la tabla de destino. Este campo es obligatorio para las transferencias incrementales.
    assets Obligatorio Lista de los nombres de las tablas de ServiceNow que se transferirán desde ServiceNow como parte de la transferencia.
    watermarkColumns Opcional Si se usa la transferencia incremental, es el campo de la tabla de origen (por lo general, fecha y hora) que se usa para hacer un seguimiento del último punto de sincronización exitoso, lo que permite que el conector consulte y transfiera de manera eficiente solo los registros que se crearon o modificaron desde ese momento específico. Este campo es obligatorio para las transferencias incrementales.
    primaryKeys Opcional Si se usa la transferencia incremental, es la columna o la combinación de columnas únicas que se usan para identificar de forma única cada fila de la tabla de origen. Este campo es obligatorio para las transferencias incrementales.
    valueType Opcional Controla cómo se asignan los tipos de datos específicos de ServiceNow a los tipos de datos de BigQuery.
    connector.legacyMapping Obligatorio Se establece en true (predeterminado) para usar la asignación de tipos de datos heredada. Establece el valor en false para usar la asignación de tipo de datos actualizada. Si realizas una transferencia incremental, este valor debe ser false. Para obtener más información sobre las actualizaciones de asignación de tipos de datos, consulta 16 de marzo de 2027.

    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. Asegúrate de que el orden de las tablas y sus respectivas columnas se mantenga de manera coherente en todas las listas de configuración relacionadas.

    Por ejemplo, el siguiente comando crea una transferencia de datos de ServiceNow en el proyecto predeterminado con todos los parámetros obligatorios:

      bq mk
        --transfer_config
        --target_dataset=mydataset
        --data_source=servicenow
        --display_name='My Transfer'
        --params='{"connector.authentication.oauth.clientId": "1234567890",
            "connector.authentication.oauth.clientSecret":"ABC12345",
            "connector.authentication.username":"user1",
            "connector.authentication.password":"abcdef1234",
            "connector.instanceId":"dev-instance",
            "connector.networkAttachment": "projects/dev-project1/regions/us-central1/networkattachments/na1"}'
    

    El siguiente comando crea una transferencia de datos incremental de ServiceNow en el proyecto predeterminado y usa el modo de escritura UPSERT.

      bq mk
          --transfer_config
          --target_dataset=mydataset
          --data_source=servicenow
          --display_name='My Transfer'
          --params='{"assets": ["incident", "change_request"],
              "connector.authentication.oauth.clientId": "1234567890",
              "connector.authentication.oauth.clientSecret":"ABC12345",
              "connector.authentication.username":"user1",
              "connector.authentication.password":"abcdef1234",
              "connector.instanceId":"dev-instance",
              "ingestionType":"incremental",
              "writeMode":"WRITE_MODE_UPSERT",
              "watermarkColumns":["sys_updated_on","sys_updated_on"],
              "primaryKeys":[["sys_id"], ["sys_id"]]}'
    

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 ServiceNow activa automáticamente una ejecución de transferencia según la opción de programación que elijas. Con cada ejecución de transferencia, el conector de ServiceNow transfiere todos los datos disponibles de ServiceNow 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 muestra cómo se asignan los tipos de datos en una transferencia de datos de ServiceNow:

Tipo de datos de ServiceNow Tipo de datos de BigQuery Tipo de datos de BigQuery actualizado
decimal FLOAT64
integer INTEGER
boolean BOOLEAN
glide_date DATE
glide_date_time DATETIME
glide_list STRING ARRAY
glide_time INT64
reference STRING
currency STRING
sys_class_name STRING
domain_id STRING
domain_path STRING
guid STRING
translated_html STRING
journal STRING
string STRING
list STRING ARRAY

Cómo solucionar problemas de transferencia

En las siguientes secciones, se detallan los problemas comunes que se producen cuando se configura una transferencia de datos de ServiceNow.

Para obtener más información, consulta Soluciona problemas relacionados con la configuración de una transferencia.

La transferencia falla debido a la habilitación de ServiceNow

Se produce un problema que provoca que las transferencias de datos fallen cuando las aplicaciones de Adquisición, Catálogo de productos o Administración de contratos no están habilitadas en ServiceNow. Para solucionarlo, habilita las tres aplicaciones:

El problema se produce durante la ejecución de la transferencia

Se produce un problema que hace que la ejecución de la transferencia no se cree según lo previsto. Para solucionar el problema, haz lo siguiente:

  • Verifica las credenciales de la cuenta de ServiceNow estén correctas, como los valores Nombre de usuario, Contraseña, ID de cliente y Secreto de cliente.
  • Verifica que el ID de la instancia sea el ID válido de tu instancia de ServiceNow.

Otros errores

Para obtener información sobre otros errores que se produjeron durante una transferencia de datos de ServiceNow, consulta Problemas con la transferencia de ServiceNow.

Precios

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

¿Qué sigue?