Есть ли способ запустить скрипт BigQuery из Google Cloud Datalab? - PullRequest
0 голосов
/ 09 апреля 2020
%%bq query
SELECT 2;
SELECT 3;

приведет к ошибке.

Я также попробовал более сложный подход, например несколько вариантов:

import google.datalab.bigquery as bq
bq.Query(sql='''
SELECT 2;
SELECT 3;
''').execute()

И он не будет работать. Я думаю, что проблема в том, что python API не знает, как обращаться с несколькими возвращенными наборами результатов.

1 Ответ

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

Хотя трудно понять причину вашей ошибки, не видя получаемого вами сообщения, я смог выполнить ваш запрос с некоторыми незначительными отличиями. Однако я должен подчеркнуть некоторые моменты заранее.

Сначала проверьте, нужно ли проверять, правильно ли настроены API Google Compute Engine и Cloud Source Repositories и правильно ли настроен ваш проект, здесь .

Я следовал этому руководству в документации, чтобы установить Gcloud в моем локальном терминале, но вы можете выбрать другие способы установки здесь , на случай, если вы нужно это. Затем, чтобы настроить DataLab, я следовал QuickStart , предоставленному Google.

Чтобы использовать BigQuery в записной книжке, вы должны импортировать модуль google.datalab.bigquery. После этого в вашей командной строке я просто добавил оператор UNION ALL , чтобы значения отображались в 2 разных строках следующим образом:

query_test = bq.Query('Select 3 UNION ALL Select 2 ')

Там выиграно ' Чтобы не быть отображаемых результатов, чтобы убедиться, что результаты будут получены, вы должны использовать методы execute() и result() чтобы выполнить вышеуказанный запрос. Кроме того, вы также можете, в качестве опции, установить кеш отключенным, чтобы результаты, которые вы получаете, были получены не от других предыдущих прогонов. Вы можете сделать это следующим образом:

output_options = bq.QueryOutput.table(use_cache=False)
result = query_test.execute(output_options=output_options).result()
result

И вывод:

f0_
3
2

Другой способ выполнить тот же запрос и получить тот же результат, что и выше, - использовать %% bq , как вы упомянули. Вы можете выполнить тот же запрос, как показано ниже:

%%bq query
select 2 union all select 3

Я рекомендую вам взглянуть на datalab/docs/tutorials/BigQuery/BigQuery/ в вашем экземпляре блокнота, есть важные примеры использования и объяснения, а также Работа с блокнотами документация .

...