【发布时间】:2016-03-10 20:59:33
【问题描述】:
这是我的查询:
SELECT hits.page.pagePath
FROM [(project_id):(dataset_id).ga_sessions_20151019]
GROUP BY hits.page.pagePath LIMIT 1
它在 Web UI 中运行。
这是我的代码:
from oauth2client.service_account import ServiceAccountCredentials
from httplib2 import Http
from apiclient.discovery import build
import json
query = "SELECT hits.page.pagePath FROM [(project_id):(dataset_id).ga_sessions_20151019] GROUP BY hits.page.pagePath LIMIT 1",
path = (filepath of credentials json file)
scopes = ['https://www.googleapis.com/auth/bigquery']
credentials = ServiceAccountCredentials.from_json_keyfile_name(path,scopes)
http_auth = credentials.authorize(Http())
bigquery = build('bigquery','v2',http=http_auth)
req_body = {
"timeoutMs": 60000,
"kind": "bigquery#queryRequest",
"dryRun": False,
"useQueryCache": True,
"useLegacySql": False,
"maxResults": 100,
"query": query,
"preserveNulls": True,
}
bigquery.jobs().query(projectId=(project_id),body=req_body).execute()
当我运行它时,我收到以下错误:
HttpError: <HttpError 400 when requesting https://www.googleapis.com/bigquery/v2/projects/cardinal-path/queries?alt=json returned "Syntax error: Unexpected "["">
它似乎不喜欢我的查询字符串中的括号,但我不知道如何转义它们(如果这是问题的话)。有谁看到我做错了什么?我不认为这是我与 API 的连接的问题,因为我可以通过调用服务对象的 ('bigquery'以上)jobs().list() 函数。谢谢!
【问题讨论】:
-
您是否尝试过用括号替换查询中的括号?尽管听起来很奇怪,但这可能会解决您的问题。如果这不能解决问题,您可能还想尝试根本不包括括号。看看它是否有效。
-
我很确定 BigQuery 需要括号才能知道我指的是表。我尝试删除它们并用括号替换它们,结果查询既不会在 Web UI 中运行,也不会通过 API 运行。您认为这可能是编码问题吗?
标签: python sql api google-bigquery google-api-client