Solución:
Así que aclaremos algunos hechos en primer lugar.
Bigquery es un almacén de datos administrado adecuado para grandes conjuntos de datos, y es complementario a una base de datos tradicional, en lugar de un reemplazo.
Solo puede realizar un máximo de 96 operaciones DML (actualizar, eliminar) en una mesa por día. Esto es por diseño. Este límite es bajo porque te obliga a pensar en BQ como un lago de datos. Por lo tanto, en BigQuery, de hecho, dejas entrar todos los datos y todo se agrega solo por diseño. Eso significa que, por diseño, tiene una base de datos que contiene una nueva fila para cada actualización. Por lo tanto, si desea usar los datos más recientes, debe elegir la última fila y usarla.
De hecho, aprovechamos los conocimientos de cada nueva actualización que agregamos a la misma fila. Por ejemplo, podemos detectar cuánto tiempo tardó el usuario final en elegir su país en el flujo de registro. Debido a que tenemos un menú desplegable de países, tomó algún tiempo hasta que se desplazó al país correcto, y las métricas lo muestran, porque terminamos en BQ con dos filas, un país seleccionado anteriormente y otro después del país seleccionado y basado en selección de tiempo pudimos optimizar el proceso. Ahora, en nuestro menú desplegable de países, tenemos los primeros 5 países más recientes / frecuentes enumerados, por lo que esos usuarios ya no necesitan desplazarse y elegir un país; es mas rapido.
“Bulk Delete and Insert” es el enfoque que estoy usando para evitar los registros duplicados. Y los propios “Servicios de transferencia de BigQuery de Youtube” de Google también están utilizando “Eliminar e insertar a granel”.
Los “Servicios de transferencia de YouTube BigQuery” envían informes diarios al mismo conjunto de tablas de informes todos los días. Cada registro tiene una columna “fecha”.
Cuando ejecutamos el backfill de Youtube Bigquery Transfer (solicite a youtube bigquery transfer que vuelva a enviar los informes para determinadas fechas). Los servicios de Youtube BigQury Transfer primero eliminarán el conjunto de datos completo para esa fecha en las tablas de informes y luego insertarán el conjunto de datos completo de esa fecha. a las tablas de informes de nuevo.
Otro enfoque es eliminar la tabla de resultados (si ya existe) primero, y luego volver a crear la tabla de resultados y volver a ingresar los resultados en las tablas nuevamente. Usé mucho este enfoque. Todos los días, tengo los resultados de mis datos de proceso guardados en algunas tablas de resultados en el conjunto de datos diario. Si vuelvo a ejecutar el proceso de ese día, mi script comprobará si las tablas de resultados de ese día existen o no. Si existe una tabla para ese día, elimínela y luego vuelva a crear una nueva tabla nueva y luego vuelva a ingresar los resultados del proceso en la nueva tabla creada.