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
DATETIMEcolumnas 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
assetdespué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_AToLAST_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
- Completa todas las acciones necesarias para habilitar el Servicio de transferencia de datos de BigQuery.
- Crea un conjunto de datos de BigQuery para almacenar los datos.
- Si quieres configurar las notificaciones de ejecución de transferencias para Pub/Sub, asegúrate de tener el permiso
pubsub.topics.setIamPolicyde Identity and Access Management (IAM). Si solo configuras las notificaciones por correo electrónico, no se necesitan los permisos de Pub/Sub. Para obtener más información, consulta la sección sobre notificaciones de ejecución del Servicio de transferencia de datos 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
Ve a la página Transferencia de datos en la Google Cloud consola.
Haz clic en Crear transferencia.
En la sección Tipo de fuente, en Fuente, selecciona ServiceNow.
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.
- Selecciona Comercial si la URL
de tu instancia de ServiceNow sigue el patrón
- 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.
- Si seleccionas Incremental (Vista previa), en Write mode, selecciona Upsert. Para obtener más información sobre los modos de escritura, consulta Transferencias completas o incrementales.
- 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.
- (Opcional) En Adjunto de red, selecciona un adjunto de red en el menú desplegable o haz clic en Crear adjunto de red.
En la sección Configuración de destino, en Conjunto de datos, selecciona el conjunto de datos que creaste para almacenar tus datos.
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.
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.
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.
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_NAMEes 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.DATASETes el conjunto de datos de destino para la configuración de transferencia.PARAMETERSson 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.networkAttachmentOpcional Nombre de la vinculación de red que se usará para garantizar la conectividad con la instancia de ServiceNow. connector.instanceIdObligatorio ID de la instancia de ServiceNow connector.authentication.usernameObligatorio Nombre de usuario de la instancia de ServiceNow del usuario. connector.authentication.passwordObligatorio Contraseña para la instancia de ServiceNow del usuario. connector.authentication.oauth.clientIdObligatorio Es el ID de cliente para la autenticación de OAuth con la instancia de ServiceNow. connector.authentication.oauth.clientSecretObligatorio Es el secreto del cliente para la autenticación de OAuth con la instancia de ServiceNow. connector.instanceCloudTypeOpcional 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ónhttps://INSTANCE_ID.service-now.comGOVERNMENT_COMMUNITY_CLOUDsi la URL de tu instancia de ServiceNow sigue el patrónhttps://INSTANCE_ID.servicenowservices.com
ingestionTypeOpcional 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. writeModeOpcional 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. assetsObligatorio Lista de los nombres de las tablas de ServiceNow que se transferirán desde ServiceNow como parte de la transferencia. watermarkColumnsOpcional 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. primaryKeysOpcional 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. valueTypeOpcional Controla cómo se asignan los tipos de datos específicos de ServiceNow a los tipos de datos de BigQuery. connector.legacyMappingObligatorio Se establece en true(predeterminado) para usar la asignación de tipos de datos heredada. Establece el valor enfalsepara usar la asignación de tipo de datos actualizada. Si realizas una transferencia incremental, este valor debe serfalse. 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
watermarkColumnsyprimaryKeyscorresponden a la posición de los valores en el campoassets. 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.
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:
- Adquisición
- Catálogo de productos
- Administración de contratos (habilitada de forma predeterminada)
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?
- Si deseas obtener una descripción general del Servicio de transferencia de datos de BigQuery, consulta la página sobre la introducción al Servicio de transferencia de datos de BigQuery.
- Para obtener información sobre el uso de las transferencias (por ejemplo, cómo obtener información sobre una configuración de transferencia, mostrar distintas configuraciones o visualizar su historial de ejecuciones), consulta Trabaja con transferencias.
- Obtén más información sobre cómo cargar datos con operaciones entre nubes.