当前位置: 首页 > 知识库问答 >
问题:

Http错误:使用jobs.query()BQ API时缺少400个所需参数

张成济
2023-03-14

我在堆栈溢出中找不到完全相同的问题。抱歉,如果这是一个重复的问题。我使用此代码片段将查询传递给表。

_body = {'_query':'SELECT * FROM `<projectId>.<datasetId>.<tableId>`',
                   'useLegacySql': False,
                   'maxResults': 100                  
                   }

table = _bq.jobs().query(projectId= <projectId>,alt = "json", body = _body).execute()

我传递所有需要的参数,因为使用jobs.queryAPI,我得到状态代码200,与结果,但在Python程序中集成片段,我得到以下错误:

文件"D:\应用程序\Python27\lib\site-包\oAuth2Client\_helpers.py",第133行,positional_wrapper\n返回包装(*args,**kwargs)\n','File"D:\应用程序\Python27\lib\site-包\googleapiclient\http.py",行842,在执行\n提高HttpError(resp,内容,uri=self.uri)\n','HttpError:https://www.googleapis.com/bigquery/v2/projects/projectId/queries?alt=json返回"所需参数丢失"

共有3个答案

酆恩
2023-03-14

您确实没有发送所需的参数。查看此示例以了解如何正确执行此操作:

def sync_query(service, project_id, query, timeout=10000, num_retries=5):
    query_data = {
                    'query': query,
                    'timeoutMs': timeout,
                 }
    return service.jobs().query(
            projectId=project_id,
            body=query_data).execute(num_retries=num_retries)
曾嘉福
2023-03-14

我不确定您在示例中使用的是哪个库,但我建议使用Python BigQuery客户端库。您将在其GitHub参考页面中找到完整的参考(以及大量示例)。

更具体地说,您将在这里找到一些关于如何使用Python客户端库查询数据的示例。

在安装客户端库并设置身份验证(这两个步骤在我共享的第一个链接中进行了解释)之后,您将能够执行一个脚本,如我下面介绍的脚本。在它中,一个公共数据集正在被查询,但是可以根据您的需要随意修改查询。

from google.cloud import bigquery

client = bigquery.Client()

# Define the query
query = "SELECT * FROM `bigquery-public-data.stackoverflow.posts_questions` LIMIT 10"

# Define the query job, by default uses Standard SQL
query_job = client.query(query)

results = query_job.result()  # Waits for job to complete.

for row in results:
    print("{}".format(row.title))

还请注意,此客户端库默认使用标准SQL(这是使用BigQuery的首选语言),但您始终可以通过调整QueryJobConfig来修改作业设置。

张权
2023-03-14

我相信问题不bq参数,但执行()参数。它应该有超文本传输协议参数,您可以在其中提供超文本传输协议上下文和用户凭据

在appengine中,你可以这样做

SCOPE='https://www.googleapis.com/auth/bigquery https://www.googleapis.com/auth/cloud-patform '
_http = AppAssertionCredentials(scope=SCOPE).authorize(httplib2.Http(timeout=600))
table = _bq.jobs().query(projectId= <projectId>,alt = "json", body = _body).execute(http=_http)
 类似资料:
  • 我在使用Google OAuth2进行身份验证时遇到困难。 我已经从google开发者控制台获得了客户端ID和密码,我得到了以下代码: 但我从谷歌得到这个错误: 错误:invalid_request 缺少必需的参数:client_id 了解更多 请求详细信息client _ id = redirect _ uri = http://127 . 0 . 0 . 1:8080/auth respons

  • 问题内容: 我是OSGI的新手,我试图找出解决以下错误的方法 org.osgi.framework.BundleException:包org.foo.serviceBundle中未解决的约束[253]:无法解决253.0:缺少要求[253.0]包;未解决。(&(package = org.slf4j)(版本> = 1.6.0)(!(版本> = 2.0.0))) 我使用了Maven原型来生成包,并在

  • 我正在学习python。我创建了一个包含2个方法的类可视化工具。现在我想在第二个方法中调用第一个方法。我读到我必须使用self: 这很有效。现在我添加了其他参数: 我从我的调用它: 现在我得到一个错误: 我检查了,参数3在那里,参数序列是相同的。我认为它与自我冲突。 我怎样才能解决这个问题?我的类中是否需要init方法? 编辑:在我的主页上:

  • 我是Python的新手,我正在尝试学习如何使用类。有人知道这怎么不起作用吗?任何关于关键字“self”的额外提示都将不胜感激。 代码: 错误:

  • 问题内容: 使用时为什么会出现此错误? 我的代码: 错误: 我正在使用带有“依赖项”的node.js v6.11.0: 问题答案: 您的NodeJS版本(6.11 LTS)过旧,不支持这些功能。语法错误是Java解释器无法识别令牌并对参数感到困惑的结果。 升级到NodeJS 7.6或更高版本。https://www.infoq.com/news/2017/02/node-76-async- awa

  • 问题内容: 我已经配置了jenkins来构建我的ios- swift应用程序。我使用过xcode版本8.1和swift版本3。我是Jenkins的新手,并继续集成过程。根据我的控制台输出,我认为构建成功。因为这样的控制台输出打印 但是在此控制台输出打印失败消息之后。 我这样的gofinal控制台输出。 与此相关的问题是什么? 问题答案: 经过广泛的研究,我终于找到了解决该问题的方法。我所做的第二个