Как получить информацию о задании, связанном с выполнением Google BigQuery, в общедоступном наборе данных c? - PullRequest
0 голосов
/ 15 января 2020

Я выполнил запрос к BigQuery из облачной оболочки:

xenonxie@cloudshell:~ (welynx)$ bq query --dry_run "SELECT COUNT(1) as rowcount, COUNTIF(corpus = 'hamlet') as rowcount_hamlet FROM publicdata.samples.shakespeare order by rowcount_hamlet desc"
Query successfully validated. Assuming the tables are not modified, running this query will process 2464625 bytes of data.
xenonxie@cloudshell:~ (welynx)$ bq query "SELECT COUNT(1) as rowcount, COUNTIF(corpus = 'hamlet') as rowcount_hamlet FROM publicdata.samples.shakespeare order by rowcount_hamlet desc"
Waiting on bqjob_r152b89ff4ea17df1_0000016faa8d1546_1 ... (0s) Current status: DONE   
+----------+-----------------+
| rowcount | rowcount_hamlet |
+----------+-----------------+
|   164656 |            5318 |
+----------+-----------------+

Я вижу, что с ним связана работа:

xenonxie@cloudshell:~ (welynx)$ bq ls -j -a
                    jobId                      Job Type    State      Start Time         Duration
 -------------------------------------------- ---------- --------- ----------------- ----------------
  bqjob_r152b89ff4ea17df1_0000016faa8d1546_1   query      SUCCESS   15 Jan 13:52:50   0:00:00.886000

Теперь я хочу получить подробности работы, как описано в документации BigQuery REST API здесь :

https://bigquery.googleapis.com/bigquery/v2/projects/bqjob_r152b89ff4ea17df1_0000016faa8d1546_1/jobs

Однако я получил ошибку ниже:

xenonxie@cloudshell:~ (welynx)$ wget https://bigquery.googleapis.com/bigquery/v2/projects/bqjob_r152b89ff4ea17df1_0000016faa8d1546_1/jobs
--2020-01-15 15:10:23--  https://bigquery.googleapis.com/bigquery/v2/projects/bqjob_r152b89ff4ea17df1_0000016faa8d1546_1/jobs
Resolving bigquery.googleapis.com (bigquery.googleapis.com)... 173.194.217.95, 2607:f8b0:400c:c0d::5f
Connecting to bigquery.googleapis.com (bigquery.googleapis.com)|173.194.217.95|:443... connected.
HTTP request sent, awaiting response... 401 Unauthorized

Username/Password Authentication Failed.

Может кто-нибудь просветить меня как что здесь происходит не так и как я могу это исправить? Большое спасибо.

1 Ответ

1 голос
/ 16 января 2020

Есть несколько вещей, которые здесь не выглядят:

  • Хотя вы можете использовать wget для вызова API BigQuery REST, я не рекомендую этот метод - предпочтительным, наиболее часто используемым и простым способом использования метода go является использование cURL.
  • Метод BigQuery REST API, который вы связали , предназначен для перечисления все Задания BigQuery, а не детали одного, как вы просите. Кроме того, запрошенный URL-адрес должен быть в форме https://bigquery.googleapis.com/bigquery/v2/projects/{projectId}/jobs, как указано выше - вы пропустили {projectId} и вместо него поместили идентификатор задания.
  • Независимо от того, чтобы просмотреть сведения об одном задании ID, вместо этого следует использовать метод API BigQuery REST jobs.get , где URL должен иметь вид https://bigquery.googleapis.com/bigquery/v2/projects/{projectId}/jobs/{jobId}, заменяя {projectId} идентификатором вашего проекта и {jobId} заданием BigQuery ID.
  • Чтобы вызвать REST API с помощью cURL, необходимо предоставить некоторую форму аутентификации. Одним из способов является использование токена доступа, который можно получить, запустив gcloud auth print-access-token из, т. Е. Cloud Shell.

Учитывая мои предыдущие пункты, и в итоге REST Вызов API, который должен дать вам то, что вы ищете (используя cURL), должен выглядеть примерно так:

curl -H "Authorization: Bearer "$(gcloud auth print-access-token) \
https://bigquery.googleapis.com/bigquery/v2/projects/{projectId}/jobs/bqjob_r152b89ff4ea17df1_0000016faa8d1546_1

Важно : убедитесь, что вы предоставили идентификатор проекта в качестве параметра, заменив {projectId} (включая фигурные скобки) соответственно там, где было создано задание BigQuery. Кроме того, я скопировал туда идентификатор задания из вашего вопроса, поэтому в зависимости от задания, которое вы хотите проверить, последняя часть также должна быть изменена в соответствии с вашими потребностями.

...