Почему декораторы не работают с секционированными таблицами больших запросов? - PullRequest
0 голосов
/ 06 февраля 2020

Я создал таблицу больших запросов с целочисленным диапазоном, аналогичную описанной в учебном пособии:

 CREATE TABLE
   mydataset.newtable
 PARTITION BY
   RANGE_BUCKET(customer_id, GENERATE_ARRAY(1, 100, 1))
 AS SELECT 1 AS customer_id, DATE "2019-10-01" AS date1

Однако при попытке извлечь один раздел в корзину, выполняемую в bash

bq extract myproject:mydataset.newtable\$1 gs://mybucket/newtable.csv

Я получаю сообщение об ошибке "ключ раздела недействителен". Почему? Как найти действительные ключи?

Точно так же я не могу использовать декоратор для выбора из указанного c раздела, используя запрос composer: select from mydataset.newtable$0 или select from mydataset.newtable$1 дать

Syntax error: Illegal input character "$" at [1:46]

Ответы [ 2 ]

2 голосов
/ 07 февраля 2020

Декоратор $ действителен в Legacy SQL, но вы можете выбрать один из следующих вариантов:

# LegacySQL, legacy sql is used by default in the following command. 
# From the UI you need to change it in More -> Query Settings
bq query 'SELECT * from mydataset.newtable$10'

или

# StandardSQL, the option use_legacy_sql=false force to use standard sql 
bq query --use_legacy_sql=false 'SELECT * from mydataset.newtable WHERE customer_id BETWEEN 10 AND 20'

Что касается команды bq extract, которую я мог экспорт после удаления:

$ bq extract myproject:mydataset.newtable$1 gs://mybucket/newtable.csv
Waiting on bqjob_..._000001701cb5d260_1 ... (0s) Current status: DONE   
$ gsutil cat gs://mybucket/newtable.csv
customer_id,date1
18,2020-10-01
1,2019-10-01
2,2019-10-02
$

Редактировать:

После проверки вашего комментария ниже, вы правы, приведенный выше фрагмент bq возвращает все данные.

do c Экспорт данных таблицы предполагает, что 'mydataset.table $ N' должен работать. Но когда используется символ scape (\), возвращается эта ошибка: недопустимый ключ раздела: ключ: "N"

Поскольку нет документации, указывающей, что это возможно, я уже создал FR для добавить эту функциональность. Вы можете отслеживать этот запрос в по этой ссылке , важно отметить, что для его разрешения не существует ETA.

0 голосов
/ 09 апреля 2020

Эта проблема была теперь решена Google, поэтому следующая команда работает должным образом:

bq extract myproject:mydataset.newtable\$1 gs://mybucket/newtable.csv
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...