Google BigQuery Удалить строки?

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

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

Любые рекомендации по устранению этой проблемы или если в ближайшем будущем появится запрос на удаление строк?

Ответ 1

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

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


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

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

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

Кстати, как вы в настоящее время собираете свои данные?

Ответ 2

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

Шаги для включения Standard sql

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

Это позволит языку манипулирования данными BigQuery (DML) обновлять, вставлять и удалять данные из таблиц BigQuery

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

DELETE [FROM] target_name [alias] WHERE condition

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

Ответ 3

Кроме того, если применимо, вы можете попробовать BigQuery OMIT RECORD IF, чтобы вернуть все элементы, кроме того, что вы хотите удалить. Затем создайте новую таблицу из этого результата запроса.

(пример из справочных документов Google)

SELECT * FROM
  publicdata:samples.github_nested

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

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

Ответ 4

Это актуально только при использовании устаревшего SQL.

Вы можете попробовать следующее:

DELETE FROM {dataset}.{table} WHERE {constraint}