Как выполнить запрос и вернуть результаты в формате csv - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь преобразовать запрос с помощью инструмента командной строки BigQuery, чтобы вместо этого сделать это с помощью Go, но я не нахожу, как правильно настроить запрос. У меня есть команда устанавливает формат CSV, максимальное количество строк для вывода, максимальный счет байтов и идентификатор проекта;затем запускает стандартный запрос SQL и записывает вывод в файл CSV, удаляя заголовки и пустые строки вверху.

Ниже приведена команда, которая у меня работает правильно с использованием инструмента командной строки:

bq query --format csv \
  --max_rows <max_row_int> --maximum_bytes_billed <max_bytes_billed_int> \
  --project_id <project_id> "#standardSQL
    <standard_sql_statment>
  " \
  | tail -n +3 >results.csv

Я могу видеть из документов, чтобы выполнить запрос в Go. Мне нужно создать клиент / соединениеи тогда я смогу выполнить запрос, как показано ниже:

ctx := context.Background()

client, error := bigquery.NewClient(ctx, "<project_id_string>")
if err != nil {
    return nil, err
}

q := client.Query(<standard_sql_query>)

Как я могу установить флаги конфигурации, которые у меня есть выше, в моем коде инструмента командной строки в моем коде Go?

1 Ответ

0 голосов
/ 08 ноября 2019

Вы можете использовать QueryConfig из пакета bigquery [1] [2], который содержит конфигурацию для задания запроса. Там, например, вы найдете MaxBytesBilled, который является аналогом флага --maximum_bytes_billed.

Сохранение результата не является специфической особенностью пакета BigQuery. Для этой цели вы можете использовать пакет encoding/csv [3].

[1] - https://godoc.org/cloud.google.com/go/bigquery

[2] - https://github.com/googleapis/google-cloud-go/blob/master/bigquery/query.go#L26

[3]- https://golang.org/pkg/encoding/csv/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...