es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Disparador: Enviar filas actualizadas a la Función en la Nube

No se admite la ejecución de disparadores en las tablas de BigQuery.
Una forma de hacer esto es crear un destino de Pub/Sub y recibir este evento en una función en la nube.

Supongamos que estos datos se actualizan/insertan en la tabla { name: 'abc', id: '09nv' }

Quiero enviar estos datos a la función en la nube tan pronto como se actualice la tabla.

Lo mejor que puedo hacer es enviar esto dentro del mensaje de Pub/Sub.

Mensaje de formato de Pub/Sub:
{
“data”: string, // tendrás que convertir a formato de cadena el/los registro(s) JSON según sea necesario
“attributes”: {
string: string,

},
“messageId”: string,
“publishTime”: string,
“orderingKey”: string
}

Sin embargo, no sé cómo enviar estos datos actualizados dentro del mensaje de Pub/Sub (data).

Si hay alguna otra forma además del enfoque de Pub/Sub, también se puede intentar eso.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Pub/Sub como desencadenador de tablas de BigQuery

    Dado que no hay soporte para desencadenadores en las tablas de BigQuery, una forma de recibir actualizaciones/inserciones automáticamente es creando un sink de Pub/Sub y reaccionando al evento en una Cloud Function. Así es cómo se hace:

    1. Crea un tema y una suscripción de Pub/Sub:
      • Ve a la Consola de Google Cloud.
      • Abre el menú de navegación y selecciona Pub/Sub > Temas.
      • Haz clic en Crear tema y dale un nombre (por ejemplo, actualizaciones_tabla).
      • Abre el tema y haz clic en Crear suscripción.
      • Dale un nombre (por ejemplo, sub_tabla).
      • Bajo Tipo de entrega, selecciona Pull y guarda.
    2. Crea una Cloud Function para procesar el mensaje de Pub/Sub:
      • Ve a la Consola de Google Cloud.
      • Abre el menú de navegación y selecciona Funciones > Crear función.
      • Dale un nombre y selecciona el desencadenador de Pub/Sub.
      • Elige la suscripción sub_tabla que creaste antes.
      • Escribe el código de la función que analizará los datos del mensaje y procesará la actualización/inserción de la tabla.
    3. Configura la tabla de BigQuery para publicar actualizaciones en el tema de Pub/Sub:
      • Ve a la Consola de Google Cloud.
      • Abre el menú de navegación y selecciona BigQuery.
      • Abre el conjunto de datos que contiene la tabla que deseas monitorear.
      • Abre la tabla y haz clic en Editar.
      • Haz clic en la pestaña Avanzado.
      • Bajo Inserciones en streaming, selecciona Agregar permisos a nivel de fila.
      • Bajo Permisos personalizados, selecciona Cloud Pub/Sub y elige el tema actualizaciones_tabla que creaste antes.

    Ahora, cada vez que se actualice o inserte una fila en tu tabla de BigQuery, se publicará un mensaje de Pub/Sub en el tema actualizaciones_tabla, lo que activará tu Cloud Function para procesar los datos.

    Para enviar los datos actualizados dentro del mensaje de Pub/Sub, puedes formatearlos como una cadena JSON e incluirlos en el campo data del mensaje, así:

    {
      "data": "{\"nombre\": \"abc\", \"id\": \"09nv\"}",
      "atributos": {},
      "identificadorMensaje": "1",
      "horaPublicacion": "2021-01-01T00:00:00Z"
    }
    

    En tu Cloud Function, puedes analizar la cadena JSON y recuperar los datos actualizados para procesarlos aún más.

Comments are closed.