2012-05-15 16 views
8

Ktoś wie o planach dodania obsługi usuwania części danych z tabeli w Google Bigquery? Problem, który mamy teraz, wykorzystujemy do analizy danych, które gromadzimy w czasie. Chcemy uruchamiać zapytania w ciągu ostatnich X dni danych, jednak po ostatnich X dniach danych nie musimy już przechowywać danych w BigQuery.Google BigQuery Usunąć wiersze?

Jedynym sposobem, w jaki możemy obecnie usunąć dane, jest usunięcie całej tabeli danych, a następnie jej odtworzenie i załadowanie za pomocą X liczby dni danych. To jednak wymagałoby od nas przechowywania naszych danych również w codziennych plikach CSV, co nie jest optymalne.

Wszelkie zalecenia dotyczące sposobu radzenia sobie z tym problemem lub jeśli w najbliższym czasie pojawi się zapytanie o usunięcie wierszy?

Odpowiedz

12

2016 aktualizacja: BigQuery można usuwać i aktualizować wiersze teraz - Fh

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


Dzięki za opisując swój przypadek użycia. BigQuery jest dołączany tylko według projektu. Obecnie nie obsługujemy usuwania pojedynczych wierszy lub partii wierszy z istniejącego zestawu danych.

Obecnie, aby wdrożyć "rotacyjny" system dziennika, należy: 1. Utwórz nową tabelę każdego dnia (i usuń starsze tabele, jeśli jest to konieczne) 2. Dołącz dane do tabeli i zapytaj o czas/date

Naprawdę polecam utworzenie nowej tabeli na każdy dzień. Ponieważ opłaty BigQuery zależą od ilości zapytanych danych, będzie to dla ciebie najbardziej opłacalne, a nie wymagające sprawdzania za każdym razem ogromnych zestawów danych.

Nawiasem mówiąc - w jaki sposób obecnie gromadzisz swoje dane?

+0

dobra propozycja. Obecnie przechowujemy go w MySQL, zrzucamy dane, które faktycznie przetwarzamy, do pliku CSV i przesyłamy go. Rozglądam się za ograniczeniami liczby tabel w określonym zestawie danych, ale nie mogę znaleźć żadnych. Czy to prawda, że ​​nie ma ograniczeń? – Daum

+1

Tylko wartość FYI, jeśli stosujesz podejście oparte na stołach obrotowych - usługa BigQuery obsługuje teraz czas wygaśnięcia tabeli. Możesz zaktualizować tabelę za pomocą narzędzia bq za pomocą 'bq update --expiration dataset.table'. –

+0

@Daum BigQuery nie ma limitu liczby tabel, które można utworzyć dla zbioru danych. –

2

Również, jeśli to możliwe, możesz wypróbować opcję OMIT RECORD IF w BigQuery, aby zwrócić wszystkie elementy oprócz tego, co chcesz usunąć. Następnie utwórz nową tabelę z tego wyniku zapytania.

(przykład wzięty z Google docs odniesienia)

SELECT * FROM 
    publicdata:samples.github_nested 

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

Źródło: https://cloud.google.com/bigquery/query-reference

13

Do usuwania rekordów w Big zapytania, trzeba najpierw włączyć standardem SQL.

Kroki umożliwiające standardem SQL

  1. Otwórz internetowy interfejs BigQuery.
  2. Kliknij przycisk Utwórz zapytanie.
  3. Kliknij Pokaż opcje.
  4. Odznacz pole wyboru Użyj legacy SQL.

To pozwoli na BigQuery Dynamiczny Manipulation Language (DML) do aktualizacji, wstawiania i usuwania danych z tabel BigQuery

Teraz można napisać zapytanie SQL zwykły usunąć rekord (y)

DELETE [FROM] target_name [alias] WHERE condition 

można odwołać: https://cloud.google.com/bigquery/docs/reference/standard-sql/dml-syntax#delete_statement