2012-05-15 4 views
8

Кто-нибудь знает какие-либо планы по добавлению поддержки для удаления частей данных из таблицы в Google Bigquery? Проблема, которую мы имеем сейчас, заключается в том, что мы используем ее для анализа данных, которые мы собираем с течением времени. Мы хотим запускать запросы за последние X дней данных, однако после последних X дней данных нам больше не нужно хранить данные в BigQuery.Google BigQuery Удалить строки?

Единственный способ, с помощью которого мы можем сейчас удалить данные, состоит в том, чтобы удалить всю таблицу данных, а затем воссоздать ее и загрузить ее с Х количество дней данных. Это потребует от нас хранения наших данных в ежедневных файлах CSV, что не является оптимальным.

Какие-либо рекомендации относительно того, как справиться с этой проблемой, или если в ближайшем будущем появится запрос на удаление строк?

ответ

12

2016 обновление: BigQuery можно удалить и обновить строки сейчас - Fh

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


Спасибо за описав случай использования. BigQuery добавляется только по дизайну. В настоящее время мы не поддерживаем удаление отдельных строк или партии строк из существующего набора данных.

В настоящее время для реализации «вращающейся» системы журнала вы должны либо: 1. Создайте новую таблицу каждый день (и удалить старые таблицы, если это необходимо) 2. Добавление данных в таблицы и запрос по времени/date

Я бы рекомендовал создать новую таблицу для каждого дня. Поскольку BigQuery взимает комиссионные по количеству запрошенных данных, это было бы наиболее экономично для вас, вместо того, чтобы каждый раз запрашивать все массивные массивы данных.

Кстати, как вы сейчас собираете данные?

+0

Хорошее предложение. В настоящее время мы храним его в MySQL, выгружаем данные, которые мы фактически обрабатываем, в CSV и загружаем. Я просматриваю любые ограничения на количество таблиц в определенном наборе данных, но не могу найти их. Правильно ли это, когда нет ограничений? – Daum

+1

Просто FYI, если вы используете подход вращающихся таблиц - BigQuery теперь поддерживает время истечения таблицы. Вы можете обновить таблицу с помощью инструмента bq, используя 'bq update --expiration dataset.table'. –

+0

@Daum BigQuery не имеет ограничения на количество таблиц, которые вы можете создать на каждый набор данных. –

2

Кроме того, если применимо, вы можете попробовать ОМИТ-ЗАПИСЬ BigQuery IF, чтобы вернуть все элементы, кроме того, что вы хотите удалить. Затем создайте новую таблицу из этого результата запроса.

(пример взят из справочных материалов Google)

SELECT * FROM 
    publicdata:samples.github_nested 

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

Источник: https://cloud.google.com/bigquery/query-reference

13

Для удаления записей в большом запросе, вы должны сначала включить стандартный SQL.

шаги для включения Стандартное SQL

  1. Откройте веб-интерфейс BigQuery.
  2. Нажмите «Написать запрос».
  3. Нажмите «Показать параметры».
  4. Снимите флажок Использовать устаревший SQL.

Это позволит в BigQuery Dynamic Manipulation Language (DML) для обновления, вставки и удаления данных из таблиц BigQuery

Теперь вы можете написать простой запрос SQL для удаления записи (s)

DELETE [FROM] target_name [alias] WHERE condition 

Вы можете обратиться: https://cloud.google.com/bigquery/docs/reference/standard-sql/dml-syntax#delete_statement

Смежные вопросы