En este documento, se describe cómo crear una suscripción a BigQuery. Puedes usar la consola de Google Cloud, Google Cloud CLI, la biblioteca cliente o la API de Pub/Sub para crear una suscripción a BigQuery.
Antes de comenzar
Antes de leer este documento, asegúrate de estar familiarizado con lo siguiente:
Cómo funcionan las suscripciones
El flujo de trabajo de las suscripciones de BigQuery
Cómo configurar un tema de mensajes no entregados para controlar las fallas de los mensajes
Además de conocer Pub/Sub y BigQuery, asegúrate de cumplir con los siguientes requisitos previos antes de crear una suscripción a BigQuery:
Que exista una tabla de BigQuery Como alternativa, puedes crear uno cuando crees la suscripción a BigQuery, como se describe en las secciones posteriores de este documento.
La compatibilidad entre el esquema del tema de Pub/Sub y la tabla de BigQuery. Si agregas una tabla de BigQuery que no es compatible, recibirás un mensaje de error relacionado con la compatibilidad. Para obtener más información, consulta Compatibilidad de esquemas.
Roles y permisos requeridos
A continuación, se muestra una lista de lineamientos relacionados con los roles y los permisos:
Para crear una suscripción, debes configurar el control de acceso a nivel del proyecto.
También necesitas permisos a nivel del recurso si tus suscripciones y temas están en diferentes proyectos, como se explica más adelante en esta sección.
Para crear una suscripción a BigQuery, la cuenta de servicio de Pub/Sub debe tener permiso para escribir en la tabla de BigQuery específica. Para obtener más información sobre cómo otorgar estos permisos, consulta la siguiente sección de este documento.
Puedes configurar una suscripción a BigQuery en un proyecto para escribir en una tabla de BigQuery en otro proyecto.
Para obtener los permisos que necesitas para crear suscripciones de BigQuery,
pídele a tu administrador que te otorgue el rol de IAM de Editor de Pub/Sub (roles/pubsub.editor
) en el 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 suscripciones 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 suscripciones de BigQuery:
-
Extraer de una suscripción:
pubsub.subscriptions.consume
-
Crea una suscripción:
pubsub.subscriptions.create
-
Borrar una suscripción:
pubsub.subscriptions.delete
-
Obtener una suscripción:
pubsub.subscriptions.get
-
Cómo enumerar una suscripción:
pubsub.subscriptions.list
-
Actualizar una suscripción:
pubsub.subscriptions.update
-
Adjuntar una suscripción a un tema:
pubsub.topics.attachSubscription
-
Obtén la política de IAM de una suscripción:
pubsub.subscriptions.getIamPolicy
-
Configura la política de IAM para una suscripción:
pubsub.subscriptions.setIamPolicy
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Si necesitas crear suscripciones a BigQuery en un proyecto que estén asociadas con un tema en otro proyecto, pídele al administrador del tema que también te otorgue el rol de IAM (roles/pubsub.editor)
Editor de Pub/Sub en el tema.
Asigna roles de BigQuery a la cuenta de servicio de Pub/Sub
Algunos servicios de Google Cloud tienen cuentas de servicio administradas por Google Cloud que permiten que los servicios accedan a tus recursos. Estas cuentas de servicio se conocen como agentes de servicio. Pub/Sub crea y mantiene una cuenta de servicio para cada proyecto en el formato service-project-number@gcp-sa-pubsub.iam.gserviceaccount.com
.
Para crear una suscripción a BigQuery, la cuenta de servicio de Pub/Sub debe tener permiso para escribir en la tabla de BigQuery específica y leer los metadatos de la tabla.
Otorga el rol de editor de datos de BigQuery (roles/bigquery.dataEditor
)
a la cuenta de servicio de Pub/Sub.
En la consola de Google Cloud, ve a la página IAM.
Haz clic en Otorgar acceso.
En la sección Agregar principales, ingresa el nombre de tu cuenta de servicio de Pub/Sub. El formato de la cuenta de servicio es
service-project-number@gcp-sa-pubsub.iam.gserviceaccount.com
. Por ejemplo, para un proyecto conproject-number=112233445566
, la cuenta de servicio tiene el formatoservice-112233445566@gcp-sa-pubsub.iam.gserviceaccount.com
.En la sección Asignar roles, haz clic en Agregar otra función.
En el menú desplegable Selecciona un rol, ingresa
BigQuery
y selecciona el rol de Editor de datos de BigQuery.Haz clic en Guardar.
Para obtener más información sobre IAM de BigQuery, consulta Roles y permisos de BigQuery.
Propiedades de suscripción a BigQuery
Cuando configuras una suscripción a BigQuery, puedes especificar las siguientes propiedades.
Propiedades comunes
Obtén información sobre las propiedades de suscripción comunes que puedes configurar en todas las suscripciones.
Usar el esquema de tema
Esta opción permite que Pub/Sub use el esquema del tema de Pub/Sub al que está adjunta la suscripción. Además, Pub/Sub escribe los campos de los mensajes en las columnas correspondientes de la tabla de BigQuery.
Cuando uses esta opción, recuerda verificar los siguientes requisitos adicionales:
Los campos del esquema del tema y del esquema de BigQuery deben tener los mismos nombres, y sus tipos deben ser compatibles entre sí.
Cualquier campo opcional en el esquema de tema también debe ser opcional en el esquema de BigQuery.
Los campos obligatorios en el esquema del tema no es necesario que sean obligatorios en el esquema de BigQuery.
Si hay campos de BigQuery que no están presentes en el esquema del tema, estos campos de BigQuery deben estar en el modo
NULLABLE
.Si el esquema de tema tiene campos adicionales que no están presentes en el esquema de BigQuery y estos campos se pueden descartar, selecciona la opción Descartar campos desconocidos.
Puedes seleccionar solo una de las propiedades de suscripción, Usar esquema de tema o Usar esquema de tabla.
Si no seleccionas la opción Usar el esquema de tema o Usar el esquema de tabla, asegúrate de que la tabla de BigQuery tenga una columna llamada data
de tipo BYTES
, STRING
o JSON
. Pub/Sub escribe el mensaje en
esta columna de BigQuery.
Es posible que no veas que los cambios en el esquema de temas de Pub/Sub o el esquema de tablas de BigQuery se apliquen de inmediato con los mensajes que se escriben en la tabla de BigQuery. Por ejemplo, si la opción Descartar campos desconocidos está habilitada y hay un campo presente en el esquema de Pub/Sub, pero no en el esquema de BigQuery, es posible que los mensajes escritos en la tabla de BigQuery aún no contengan el campo después de agregarlo al esquema de BigQuery. Con el tiempo, los esquemas se sincronizan y los mensajes posteriores incluyen el campo.
Cuando usas la opción Usar esquema de tema para tu suscripción a BigQuery, también puedes aprovechar la captura de datos modificados (CDC) de BigQuery. La CDC actualiza las tablas de BigQuery mediante el procesamiento y la aplicación de cambios a las filas existentes.
Para obtener más información sobre esta función, consulta Transmite actualizaciones de tablas con captura de datos modificados.
Para obtener información sobre cómo usar esta función con suscripciones a BigQuery, consulta Captura de datos modificados de BigQuery.
Usar el esquema de tabla
Esta opción permite que Pub/Sub use el esquema de la tabla de BigQuery para escribir los campos de un mensaje en JSON en las columnas correspondientes. Cuando uses esta opción, recuerda verificar los siguientes requisitos adicionales:
Los mensajes publicados deben estar en formato JSON.
Se admiten las siguientes conversiones de JSON:
Tipo de JSON Tipo de datos de BigQuery string
NUMERIC
,BIGNUMERIC
,DATE
,TIME
,DATETIME
oTIMESTAMP
number
NUMERIC
,BIGNUMERIC
,DATE
,TIME
,DATETIME
oTIMESTAMP
- Cuando se usan conversiones de
number
aDATE
,DATETIME
,TIME
oTIMESTAMP
, el número debe cumplir con las representaciones admitidas. - Cuando se usa la conversión de
number
aNUMERIC
oBIGNUMERIC
, la precisión y el rango de valores se limitan a los que acepta el estándar IEEE 754 para aritmética de punto flotante. Si necesitas una precisión alta o un rango más amplio de valores, usa las conversiones destring
aNUMERIC
oBIGNUMERIC
. - Cuando se usan conversiones de
string
aNUMERIC
oBIGNUMERIC
, Pub/Sub supone que la cadena es un número legible por humanos (p.ej.,"123.124"
). Si el procesamiento de la cadena como un número legible por humanos falla, Pub/Sub la trata como bytes codificados con BigDecimalByteStringEncoder.
- Cuando se usan conversiones de
Si el tema de la suscripción tiene un esquema asociado, la propiedad de codificación de mensajes debe establecerse en
JSON
.Si hay campos de BigQuery que no están presentes en los mensajes, estos campos de BigQuery deben estar en el modo
NULLABLE
.Si los mensajes tienen campos adicionales que no están presentes en el esquema de BigQuery y estos campos se pueden descartar, selecciona la opción Descartar campos desconocidos.
Puedes seleccionar solo una de las propiedades de suscripción, Usar esquema de tema o Usar esquema de tabla.
Si no seleccionas la opción Usar el esquema de tema o Usar el esquema de tabla, asegúrate de que la tabla de BigQuery tenga una columna llamada data
de tipo BYTES
, STRING
o JSON
. Pub/Sub escribe el mensaje en
esta columna de BigQuery.
Es posible que no veas que los cambios en el esquema de la tabla de BigQuery se implementen de inmediato con los mensajes escritos en la tabla de BigQuery. Por ejemplo, si la opción Descartar campos desconocidos está habilitada y un campo está presente en los mensajes, pero no en el esquema de BigQuery, es posible que los mensajes escritos en la tabla de BigQuery aún no contengan el campo después de agregarlo al esquema de BigQuery. Con el tiempo, se sincroniza el esquema y los mensajes posteriores incluyen el campo.
Cuando usas la opción Usar esquema de tabla para tu suscripción a BigQuery, también puedes aprovechar la captura de datos modificados (CDC) de BigQuery. La CDC actualiza tus tablas de BigQuery mediante el procesamiento y la aplicación de cambios a las filas existentes.
Para obtener más información sobre esta función, consulta Transmite actualizaciones de tablas con captura de datos modificados.
Para obtener información sobre cómo usar esta función con suscripciones a BigQuery, consulta Captura de datos modificados de BigQuery.
Quitar campos desconocidos
Esta opción se usa con las opciones Usar el esquema de tema o Usar el esquema de tabla. Esta opción permite que Pub/Sub descarte cualquier campo que esté presente en el esquema del tema o el mensaje, pero no en el esquema de BigQuery. Si no se configura Descartar campos desconocidos, los mensajes con campos adicionales no se escriben en BigQuery y permanecen en las tareas pendientes de la suscripción. La suscripción termina en un estado de error.
Escribir metadatos
Esta opción permite que Pub/Sub escriba los metadatos de cada mensaje en columnas adicionales de la tabla de BigQuery. De lo contrario, los metadatos no se escriben en la tabla de BigQuery.
Si seleccionas la opción Escribir metadatos, asegúrate de que la tabla de BigQuery tenga los campos que se describen en la siguiente tabla.
Si no seleccionas la opción Escribir metadatos, la tabla de BigQuery de destino solo requiere el campo data
, a menos que use_topic_schema
sea verdadero. Si seleccionas las opciones Escribir metadatos y
Usar esquema del tema, el esquema del tema no debe
contener ningún campo con nombres que coincidan con los de los parámetros de metadatos.
Esta limitación incluye las versiones en mayúsculas y minúsculas de estos parámetros en formato de barra invertida.
Parámetros | |
---|---|
subscription_name |
STRING Es el nombre de una suscripción. |
message_id |
STRING ID de un mensaje |
publish_time |
TIMESTAMP La hora de publicación de un mensaje. |
data |
BYTES, STRING o JSON El cuerpo del mensaje. El campo |
attributes |
STRING o JSON Es un objeto JSON que contiene todos los atributos del mensaje. También contiene campos adicionales que forman parte del mensaje de Pub/Sub, incluida la clave de orden, si está presente. |
Crea una suscripción a BigQuery
En los siguientes ejemplos, se muestra cómo crear una suscripción con entrega de BigQuery.
Console
- En la consola de Google Cloud, ve a la página Suscripciones.
- Haz clic en Crear suscripción.
- En el campo ID de suscripción, ingresa un nombre.
Si deseas obtener información para asignar un nombre a una suscripción, consulta los Lineamientos para asignar un nombre a un tema o una suscripción.
- Elige o crea un tema desde el menú desplegable. La suscripción recibe mensajes del tema.
- Selecciona Tipo de publicación como Escribe en BigQuery.
- Selecciona el proyecto de la tabla de BigQuery.
- Selecciona un conjunto de datos existente o crea uno nuevo.
Para obtener información sobre cómo crear un conjunto de datos, consulta Crea conjuntos de datos.
- Selecciona una tabla existente o crea una nueva.
Para obtener información sobre cómo crear una tabla, consulta Crea tablas.
- Te recomendamos que habilites Dead lettering para controlar las fallas de los mensajes.
Para obtener más información, consulta Temas de mensajes no entregados.
- Haz clic en Crear.
También puedes crear una suscripción desde la página Temas. Este acceso directo es útil para asociar temas a suscripciones.
- En la consola de Google Cloud, ve a la página Temas.
- Haz clic en more_vert junto al tema para el que quieres crear una suscripción.
- En el menú contextual, selecciona Crear suscripción (Create subscription).
- Selecciona Tipo de publicación como Escribe en BigQuery.
- Selecciona el proyecto de la tabla de BigQuery.
- Selecciona un conjunto de datos existente o crea uno nuevo.
Para obtener información sobre cómo crear un conjunto de datos, consulta Crea conjuntos de datos.
- Selecciona una tabla existente o crea una nueva.
Para obtener información sobre cómo crear un conjunto de datos, consulta Crea tablas.
- Te recomendamos que habilites Dead lettering para controlar las fallas de los mensajes.
Para obtener más información, consulta Temas de mensajes no entregados.
- Haz clic en Crear.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
Para crear una suscripción de Pub/Sub, usa el comando
gcloud pubsub subscriptions create
:gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --topic=TOPIC_ID \ --bigquery-table=PROJECT_ID:DATASET_ID.TABLE_ID
Reemplaza lo siguiente:
- SUBSCRIPTION_ID: Especifica el ID de la suscripción.
- TOPIC_ID: Especifica el ID del tema. El tema requiere un esquema.
- PROJECT_ID: Especifica el ID del proyecto.
- DATASET_ID: Especifica el ID de un conjunto de datos existente. Para crear un conjunto de datos, consulta Crea conjuntos de datos.
- TABLE_ID: Especifica el ID de una tabla existente. La tabla requiere un campo data si tu tema no tiene un esquema. Para crear una tabla, consulta Crea una tabla vacía con una definición de esquema.
C++
Antes de probar esta muestra, sigue las instrucciones de configuración de C++ que encontrarás en la guía de inicio rápido de Pub/Sub con bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de C++ de Pub/Sub.
Para autenticarte en Pub/Sub, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
C#
Antes de probar esta muestra, sigue las instrucciones de configuración de C# que encontrarás en la guía de inicio rápido de Pub/Sub con bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de C# de Pub/Sub.
Para autenticarte en Pub/Sub, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Go
Antes de probar esta muestra, sigue las instrucciones de configuración de Go que encontrarás en la guía de inicio rápido de Pub/Sub con bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Go de Pub/Sub.
Para autenticarte en Pub/Sub, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Java
Antes de probar esta muestra, sigue las instrucciones de configuración de Java que encontrarás en la guía de inicio rápido de Pub/Sub con bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Java de Pub/Sub.
Para autenticarte en Pub/Sub, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Node.js
Node.js
PHP
Antes de probar esta muestra, sigue las instrucciones de configuración de PHP que encontrarás en la guía de inicio rápido de Pub/Sub con bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de PHP de Pub/Sub.
Para autenticarte en Pub/Sub, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Python
Antes de probar esta muestra, sigue las instrucciones de configuración de Python que encontrarás en la guía de inicio rápido de Pub/Sub con bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Python de Pub/Sub.
Para autenticarte en Pub/Sub, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Ruby
Antes de probar esta muestra, sigue las instrucciones de configuración de Ruby que encontrarás en la guía de inicio rápido de Pub/Sub con bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Ruby de Pub/Sub.
Para autenticarte en Pub/Sub, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Supervisa una suscripción a BigQuery
Cloud Monitoring proporciona varias métricas para supervisar las suscripciones.
Para obtener una lista de todas las métricas disponibles relacionadas con Pub/Sub y sus descripciones, consulta la documentación de supervisión de Pub/Sub.
También puedes supervisar las suscripciones desde dentro de Pub/Sub.
¿Qué sigue?
- Crea o modifica una suscripción con los comandos
gcloud
. - Crea o modifica una suscripción con las APIs de REST.
- Soluciona problemas relacionados con una suscripción a BigQuery.