2012-05-15 30 views
8

Qualcuno sa di piani per aggiungere il supporto per eliminare parti di dati da una tabella in Google Bigquery? Il problema che abbiamo adesso è che lo stiamo usando per l'analisi dei dati che raccogliamo nel tempo. Vogliamo eseguire le query negli ultimi X giorni di dati, tuttavia dopo gli ultimi X giorni di dati non è più necessario memorizzare i dati in BigQuery.Google BigQuery Elimina righe?

L'unico modo in cui attualmente possiamo pensare di eliminare i dati sarebbe quello di eliminare l'intera tabella di dati, quindi ricrearla e caricarla con il numero X di giorni di dati. Questo però ci imporrebbe di archiviare i nostri dati anche in file CSV giornalieri, il che non è ottimale.

Eventuali suggerimenti su come gestire questo problema o se è in corso una richiesta di eliminazione delle righe nel prossimo futuro?

risposta

12

2016 aggiornamento: BigQuery può eliminare e aggiornare righe ora - Fh

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


Grazie per descrivere il vostro caso d'uso. BigQuery è append-only di design. Al momento non supportiamo l'eliminazione di singole righe o un batch di righe da un set di dati esistente.

Attualmente, per implementare un sistema di log "a rotazione" è necessario: 1. Creare una nuova tabella ogni giorno (ed eliminare tabelle vecchie se ciò è necessario) 2. Aggiungere i dati a una tabella e query tempo/data

In realtà mi consiglia di creare un nuovo tavolo per ogni giorno. Dal momento che BigQuery addebita la quantità di dati interrogati, questo sarebbe più economico per te, piuttosto che dover interrogare su interi set di dati enormi ogni volta.

A proposito: come stai attualmente raccogliendo i tuoi dati?

+0

buon suggerimento. Attualmente lo stiamo memorizzando in MySQL, scarichiamo i dati che elaboriamo in un CSV e li carichiamo. Sto cercando limiti sul numero di tabelle in un set di dati specifico, ma non riesco a trovarne. È corretto che non ci siano limiti? – Daum

+1

Solo una FYI se stai prendendo l'approccio delle tabelle rotanti - BigQuery ora supporta il tempo di scadenza della tabella. Puoi aggiornare la tabella con lo strumento bq usando 'bq update --expiration dataset.table'. –

+0

@Daum BigQuery non ha un limite al numero di tabelle che è possibile creare per set di dati. –

2

Inoltre, se applicabile, è possibile provare OMIT RECORD di BigQuery SE, per restituire tutte le voci tranne quelle che si desidera eliminare. Quindi creare una nuova tabella dal risultato della query.

(esempio tratto dalla documentazione di riferimento di Google)

SELECT * FROM 
    publicdata:samples.github_nested 

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

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

13

Per l'eliminazione di record in Big query, è necessario attivare prima SQL standard.

passaggi per abilitare SQL standard

  1. Aprire il Web UI BigQuery.
  2. Fare clic su Componi query.
  3. Fare clic su Mostra opzioni.
  4. Deseleziona la casella di controllo Usa legacy SQL.

Ciò consentirà al la Manipulation Language BigQuery dinamico (DML) per aggiornare, inserire e cancellare i dati dalle tabelle BigQuery

Ora, è possibile scrivere la query SQL pianura per eliminare il record (s)

DELETE [FROM] target_name [alias] WHERE condition 

È possibile fare riferimento: https://cloud.google.com/bigquery/docs/reference/standard-sql/dml-syntax#delete_statement