En este documento se ofrece una descripción general de una suscripción de BigQuery, su flujo de trabajo y las propiedades asociadas.
Una suscripción de BigQuery es un tipo de suscripción de exportación que escribe mensajes en una tabla de BigQuery a medida que se reciben. No es necesario configurar un cliente de suscriptor independiente. Usa la Google Cloud consola, la CLI de Google Cloud, las bibliotecas de cliente o la API de Pub/Sub para crear, actualizar, enumerar, separar o eliminar una suscripción de BigQuery.
Sin el tipo de suscripción de BigQuery, necesitas una suscripción de extracción o de inserción y un suscriptor (como Dataflow) que lea los mensajes y los escriba en una tabla de BigQuery. No es necesario sobrecargar el sistema ejecutando una tarea de Dataflow cuando los mensajes no requieren un procesamiento adicional antes de almacenarlos en una tabla de BigQuery. En su lugar, puedes usar una suscripción de BigQuery.
Sin embargo, sigue siendo recomendable usar una canalización de Dataflow en sistemas de Pub/Sub en los que se requiera alguna transformación de datos antes de que estos se almacenen en una tabla de BigQuery. Para saber cómo transmitir datos de Pub/Sub a BigQuery con transformación mediante Dataflow, consulta el artículo sobre la transmisión de datos de Pub/Sub a BigQuery.
La plantilla de suscripción de Pub/Sub a BigQuery de Dataflow aplica la entrega exactamente una vez de forma predeterminada. Esto se suele conseguir mediante mecanismos de desduplicación en la canalización de Dataflow. Sin embargo, la suscripción de BigQuery solo admite la entrega al menos una vez. Si la desduplicación exacta es fundamental para tu caso práctico, considera la posibilidad de usar procesos posteriores en BigQuery para gestionar los posibles duplicados.
Antes de empezar
Antes de leer este documento, asegúrate de que conoces los siguientes conceptos:
Cómo funciona Pub/Sub y los diferentes términos de Pub/Sub.
Los diferentes tipos de suscripciones que admite Pub/Sub y por qué te puede interesar usar una suscripción de BigQuery.
Cómo funciona BigQuery y cómo configurar y gestionar tablas de BigQuery.
Flujo de trabajo de suscripción a BigQuery
En la siguiente imagen se muestra el flujo de trabajo entre una suscripción de BigQuery y BigQuery.
A continuación, se incluye una breve descripción del flujo de trabajo que se muestra en la imagen 1:
- Pub/Sub usa la API de escritura de almacenamiento de BigQuery para enviar datos a la tabla de BigQuery.
- Los mensajes se envían en lotes a la tabla de BigQuery.
- Cuando se completa correctamente una operación de escritura, la API devuelve una respuesta OK.
- Si se produce algún fallo en la operación de escritura, el mensaje de Pub/Sub se confirma de forma negativa. A continuación, se vuelve a enviar el mensaje. Si el mensaje falla suficientes veces y hay un tema de mensajes fallidos configurado en la suscripción, el mensaje se moverá al tema de mensajes fallidos.
Propiedades de una suscripción de BigQuery
Las propiedades que configures en una suscripción de BigQuery determinan la tabla de BigQuery en la que Pub/Sub escribe los mensajes y el tipo de esquema de esa tabla.
Para obtener más información, consulta las propiedades de BigQuery.
Compatibilidad de esquemas
Esta sección solo se aplica si selecciona la opción Usar esquema de tema al crear una suscripción a BigQuery.
Pub/Sub y BigQuery usan formas diferentes de definir sus esquemas. Los esquemas de Pub/Sub se definen en formato Apache Avro o Protocol Buffer, mientras que los esquemas de BigQuery se definen con varios formatos.
A continuación, se muestra una lista de información importante sobre la compatibilidad de esquemas entre un tema de Pub/Sub y una tabla de BigQuery.
Los mensajes que contengan un campo con un formato incorrecto no se escribirán en BigQuery.
En el esquema de BigQuery,
INT,SMALLINT,INTEGER,BIGINT,TINYINTyBYTEINTson alias deINTEGER;DECIMALes un alias deNUMERIC, yBIGDECIMALes un alias deBIGNUMERIC.Si el tipo del esquema del tema es
stringy el tipo de la tabla de BigQuery esJSON,TIMESTAMP,DATETIME,DATE,TIME,NUMERICoBIGNUMERIC, cualquier valor de este campo en un mensaje de Pub/Sub debe cumplir el formato especificado para el tipo de datos de BigQuery.Se admiten algunos tipos lógicos de Avro, tal como se especifica en la siguiente tabla. Los tipos lógicos que no se incluyan en la lista solo coincidirán con el tipo Avro equivalente al que anotan, tal como se detalla en la