Как извлечь отдельный раздел из многораздельной таблицы BigQuery?

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

Экспорт всех данных из многораздельной таблицы - это тот же процесс, что и экспорт данных из несекционированной таблицы. Для получения дополнительной информации см. Экспорт табличных данных. Чтобы экспортировать данные из отдельного раздела, добавьте к имени таблицы декоратор раздела $ 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"

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

Информация о разделении исходной таблицы

Я также подтвердил, что раздел, который я пытаюсь извлечь, существует

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

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


person Graham    schedule 16.06.2020    source источник
comment
Вы пробовали цитировать название таблицы? Оператор $ может испортить имя таблицы в терминале.   -  person Tlaquetzal    schedule 16.06.2020
comment
Спасибо @Tlaquetzal. Я тоже пробовал, и это тоже не сработало   -  person Graham    schedule 18.06.2020
comment
На мой взгляд, еще одна вещь, которая может мешать восприятию разделов, - это то, что таблица может быть разделена по времени приема, а не по столбцу даты. Я заметил, что в имени корзины, которое вы используете, есть имя ga_sessions для конечного файла. Если вы используете информацию из экспорта GA, таблицы, которые вы хотите экспортировать, могут даже не быть секционированы. Можете ли вы обновить вопрос, указав детали раздела таблицы, которую вы хотите экспортировать?   -  person Tlaquetzal    schedule 18.06.2020
comment
@Tlaquetzal экспортируемая таблица содержит преобразованные данные GA, отсюда и название. Это не оригинальная таблица GA. Я обновил свой вопрос, включив в него информацию о разделах для таблицы, которую я пытаюсь экспортировать.   -  person Graham    schedule 24.06.2020
comment
Спасибо за обновления. Все выглядит нормально, значит, проблема в сервисе. И последнее, что я проверю: 1) каково поведение при попытке экспортировать несуществующий раздел, например, день 20100101. Экспорт всей таблицы также осуществляется? и 2) Учтите, что при использовании подстановочного знака в URI назначения счетчик в имени файла будет начинаться с 00000, а не с даты экспорта. Сообщите мне, если эта информация не дает новой информации   -  person Tlaquetzal    schedule 24.06.2020
comment
Я попытался экспортировать раздел 20100101, которого не существует, и все же он экспортировал всю таблицу. Я также вытащил один из сгенерированных файлов в качестве примера (test_ga_sessions000000000000.json.gz) и, просмотрев его, я мог увидеть данные, относящиеся к 2019-06-01.   -  person Graham    schedule 26.06.2020
comment
Я также обновил свой пост, чтобы показать подтверждение того, что раздел, который я пытаюсь извлечь (20200405), действительно существует.   -  person Graham    schedule 26.06.2020
comment
Привет, Грэм, я хотел бы взглянуть на это поближе. Можете ли вы открыть здесь частный IssueTracker и поделиться идентификатором JobId с одного (или нескольких ) экспорта с таким поведением? После того, как вы его открыли, вы можете снова поделиться здесь ссылочным номером, чтобы я мог посмотреть   -  person Tlaquetzal    schedule 30.06.2020
comment
Идентификатор проблемы: 160344675   -  person Graham    schedule 02.07.2020


Ответы (1)


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

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

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"
person Graham    schedule 04.07.2020