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.
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:
actualizaciones_tabla
).sub_tabla
).sub_tabla
que creaste antes.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í:En tu Cloud Function, puedes analizar la cadena JSON y recuperar los datos actualizados para procesarlos aún más.