Saltar al contenido

¿Actualizar o eliminar tablas con búfer de transmisión en BigQuery?

Solución:

Para verificar si la tabla tiene un búfer de transmisión, verifique el tables.get respuesta para una sección llamada streamingBuffer o, cuando se transmite a una tabla particionada, los datos en el búfer de transmisión tienen un valor NULL para el _PARTITIONTIME pseudocolumna, por lo que incluso con una simple consulta DONDE se puede verificar.

Los datos transmitidos están disponibles para su análisis en tiempo real a los pocos segundos de la primera inserción de transmisión en una tabla, pero pueden tardar hasta 90 minutos en estar disponibles para copiar / exportar y otras operaciones. Probablemente tenga que esperar hasta 90 minutos para que todo el búfer se conserve en el clúster. Puede usar consultas para ver si el búfer de transmisión está vacío o no como lo mencionó.

Si usa load job para crear la tabla, no tendrá búfer de transmisión, pero probablemente le haya transmitido algunos valores.


Tenga en cuenta la respuesta a continuación para trabajar con tablas que tienen búferes de transmisión en curso. Solo usa un WHERE para filtrar los últimos minutos de datos y sus consultas funcionarán. – Fh

Asegúrese de cambiar sus filtros para que no incluyan datos que podrían estar en el búfer de transmisión actual.

Por ejemplo, esta consulta falla mientras estoy transmitiendo a esta tabla:

DELETE FROM `project.dataset.table` 
WHERE id LIKE '%-%'

Error: UPDATE or DELETE statement over table project.dataset.table would affect rows in the streaming buffer, which is not supported

Puede solucionarlo eliminando solo los registros más antiguos:

DELETE FROM `project.dataset.table` 
WHERE id LIKE '%-%'
AND ts < TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 40 MINUTE)

4282 rows affected.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *