2012-05-15 305 views
8

¿Alguien sabe de algún plan para agregar soporte para eliminar partes de datos de una tabla en Google Bigquery? El problema que tenemos ahora es que lo estamos usando para el análisis de los puntos de datos que recopilamos a lo largo del tiempo. Queremos ejecutar las consultas durante los últimos X días de datos, sin embargo, después de los últimos X días de datos, ya no necesitamos almacenar los datos en BigQuery.Google BigQuery ¿Eliminar filas?

La única forma en que actualmente podemos pensar en eliminar los datos sería borrar toda la tabla de datos, a continuación, volver a crearlo y cargarlo con X número de días de datos. Sin embargo, esto también nos obligaría a almacenar nuestros datos en archivos CSV diarios, lo que no es óptimo.

Cualquier recomendación sobre cómo manejar este problema o si hay una consulta de eliminación filas vienen en un futuro próximo?

Respuesta

12

2016 actualización: BigQuery puede borrar y actualizar filas ahora - Fh

https://cloud.google.com/bigquery/docs/reference/standard-sql/dml-syntax


Gracias para describir su caso de uso. BigQuery se agrega, solo por diseño. Actualmente no admitimos la eliminación de filas únicas o un lote de filas de un conjunto de datos existente.

Actualmente, para implementar una "rotación" sistema de registro debe: 1. Crear una nueva tabla cada día (y eliminar tablas de más edad si ello es necesario) 2. append sus datos a una tabla de consulta y por el tiempo/fecha

de hecho, me recomiendan la creación de una nueva tabla para cada día. Dado que BigQuery cobra por la cantidad de datos consultados, esto sería lo más económico para usted, en lugar de tener que consultar conjuntos de datos masivos completos todo el tiempo.

Por cierto, ¿cómo está recogiendo sus datos actualmente?

+0

buena sugerencia. Actualmente lo estamos almacenando en MySQL, volcamos los datos que realmente procesamos a un archivo CSV y los cargamos. Estoy buscando límites en el número de tablas en un conjunto de datos específico, pero no puedo encontrar ninguno. ¿Es correcto que no haya límites? – Daum

+1

Solo un FYI si está tomando el enfoque de mesas giratorias: BigQuery ahora es compatible con el tiempo de expiración de la tabla. Puede actualizar la tabla con la herramienta bq usando 'bq update --expiration dataset.table'. –

+0

@Daum BigQuery no tiene un límite en la cantidad de tablas que puede crear por conjunto de datos. –

2

también, en su caso, se puede tratar de BigQuery Omitir registro SI, para devolver todos los artículos, excepto lo que se desea eliminar. Luego, crea una nueva tabla a partir de ese resultado de consulta.

(ejemplo tomado de documentos de referencia de Google)

SELECT * FROM 
    publicdata:samples.github_nested 

OMIT RECORD IF 
    COUNT(payload.pages.page_name) <= 80; 

Fuente: https://cloud.google.com/bigquery/query-reference

13

Para eliminar registros en grande de la consulta, tiene que habilitar primero SQL estándar.

pasos para habilitar SQL estándar

  1. Abra la interfaz de usuario web de BigQuery.
  2. Haga clic en Redactar consulta.
  3. Haga clic en Mostrar opciones.
  4. Desactive la casilla de verificación Usar heredado SQL.

Esto permitirá a la del lenguaje de manipulación de BigQuery dinámico (DML) para actualizar, insertar y eliminar datos de las tablas de BigQuery

Ahora, se puede escribir la consulta SQL sencilla para eliminar el registro (s)

DELETE [FROM] target_name [alias] WHERE condition 

Se puede hacer referencia: https://cloud.google.com/bigquery/docs/reference/standard-sql/dml-syntax#delete_statement