Разделение таблицы BigQuery, загруженной из AVRO - PullRequest
1 голос
/ 30 марта 2020

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

Одним из полей в каждом объекте AVRO является created (дата с типом long), и я хотел бы использовать это поле для разделения таблицы.

Каков наилучший способ сделать это?

Спасибо

1 Ответ

1 голос
/ 01 апреля 2020

Две проблемы, которые мешают использовать created в качестве столбца раздела:

  • Файл avro определяет схему во время загрузки . На этом шаге существует только одна опция: выберите Partition By Ingestion Time, однако, скорее всего, для этой цели будет включено другое поле.

  • Поле создано долго . Это значение, кажется, содержит Datetime. Если это было Integer, вы сможете каким-то образом использовать многораздельные таблицы Integer Range. Но в этом случае вам потребуется преобразовать длинное значение в метку даты / времени, чтобы использовать разбитые на даты / время таблицы .

Итак, по моему мнению, вы можете попробовать:

  1. Импорт данных в том виде, как они есть, в первую таблицу.
  2. Создайте вторую пустую таблицу, разбитую на created типа TIMESTAMP.
  3. Выполните запрос, считывающий из первой таблицы и применив функцию отметки времени к created, как TIMESTAMP_SECONDS (или TIMESTAMP_MILLIS), чтобы преобразовать значение в TIMESTAMP, поэтому каждое добавленное вами значение будет распределяли.
...