Я запускаю простой скрипт, используя cloud shell
, чтобы получить выбранные записи из данной таблицы.
#!/bin/bash
bq query --format=pretty --use_legacy_sql=false --project_id='test-project' " \
SELECT collecttime, count(distinct(CELLID)) countIngest \
FROM \`test-project.TEST_INGEST.my_test_table\` \
WHERE DATE(COLLECTTIME) >= '2020-12-01' \
group by collecttime order by collecttime;">>gsam_output.csv
Если я запущу этот запрос на Google console
, он получит 500 записей, по 100 на каждой странице, и я смогу переходить с одной страницы на другую, чтобы увидеть полный набор записей. Я также могу сохранить результаты в какой-нибудь csv с полным набором из 500 записей.
Но когда я запускаю тот же запрос в среде shell
или cloud SDK
. Это только запись или отображение тех записей, которые отображаются на первой странице в консоли. Есть ли какая-нибудь шапка для записи или отображения записей через командную строку или оболочку?
Ниже я запускаю в облачном SDK
bq query --format=csv --use_legacy_sql=false "SELECT collecttime, count(distinct(CELLID)) countIngest FROM TEST_INGEST.my_test_table WHERE DATE(COLLECTTIME) >= '2020-12-01' group by collecttime order by collecttime;">>gsam_output.csv
Итак, когда вы просматриваете выходные данные BQ, он не может разбить результаты на страницы. Вот что это делает, поэтому вы получаете только 1-ю страницу (я думаю)
То, что вы хотите попробовать, это экспортировать данные.
Вы записываете свои данные во временную таблицу в bq, а затем экспортируете их, используя инструкции здесь: https://cloud.google.com/bigquery/docs/exporting-data#bq
или
https://cloud.google.com/bigquery/docs/exporting-data#exporting_data_stored_in_bigquery
Вы также можете записать полный вывод запроса в csv с помощью консоли: https://cloud.google.com/bigquery/docs/writing-results
Кроме того, попробуйте указать свой разделитель и убедитесь, что у вас нет вложенной информации. CSV не будет работать для вложенных ресурсов в bq, вам нужно перейти на json.
Вы можете попробовать установить опцию --max_rows
или -n
при использовании команды bq query
. Вот ссылка на документацию, описывающую эту опцию.
Я попытался выполнить аналогичный запрос с этой опцией, установленной на 500, и он получил сразу 500 записей.
bq query -n 500 --format=pretty --use_legacy_sql=false "select * from bigquery-public-data.samples.shakespeare;"