Как извлечь отдельный раздел из многораздельной таблицы BigQuery? - PullRequest
0 голосов
/ 16 июня 2020

Согласно BigQuery docs , я должен иметь возможность экспортировать один раздел многораздельной таблицы:

Экспорт всех данных из многораздельной таблицы - это тот же процесс, что и экспорт данных из несекционированной таблицы. Для получения дополнительной информации см. Экспорт табличных данных. Чтобы экспортировать данные из отдельного раздела, добавьте к имени таблицы декоратор раздела $ date. Например: mytable $ 20160201.

Однако выполнение следующей команды извлечения извлекает всю таблицу, а не только один раздел. Это сводит меня с ума! Что я делаю не так?

bq --location=europe-west2 extract \
--destination_format NEWLINE_DELIMITED_JSON \
--compression GZIP \
bq-project-name:dataset.table_name$20200405 \
"gs://bucket-name/test_ga_sessions*.json.gz"

Добавление сюда информации о разделении исходной таблицы

Source Table Partitioning Info

I have also confirmed that the partition I am attempting to extract exists

#legacySQL
SELECT
  partition_id,
  creation_time,
  creation_timestamp,
  last_modified_time,
  last_modified_timestamp
FROM
  [dataset.tablename$__PARTITIONS_SUMMARY__]
  where partition_id = '20200405'

введите описание изображения здесь

1 Ответ

1 голос
/ 04 июля 2020

Поскольку я выполнял команду bq extract в оболочке bash, декоратор раздела $20200405 интерпретировался как переменная, причем пустая. Следовательно, полный идентификатор раздела bq-project-name:dataset.table_name$20200405 интерпретировался как bq-project-name:dataset.table_name к тому времени, когда запрос достиг BigQuery.

Чтобы эта команда работала правильно, все, что мне нужно было сделать, это выйти из $ символ декоратора раздела с backsla sh следующим образом:

bq --location=europe-west2 extract \
--destination_format NEWLINE_DELIMITED_JSON \
--compression GZIP \
bq-project-name:dataset.table_name\$20200405 \
"gs://bucket-name/test_ga_sessions*.json.gz"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...