BQ API ::查询与插入('查询')作业

Posted

技术标签:

【中文标题】BQ API ::查询与插入(\'查询\')作业【英文标题】:BQ API :: query vs insert ('query') jobBQ API ::查询与插入('查询')作业 【发布时间】:2018-06-27 23:20:31 【问题描述】:

我正在查看 BQ API 文档:https://cloud.google.com/bigquery/docs/reference/rest/v2/ 并想确认

职位:查询 POST https://www.googleapis.com/bigquery/v2/projects/projectId/queries

作业:插入(带有“查询”作业) POST https://www.googleapis.com/bigquery/v2/projects/projectId/jobs

两者似乎都有相同的目的,使用提供的 SQL 语句查询表...

我是否理解正确:

在其响应正文中立即返回查询结果(数据),(同步/阻塞过程排序) 而其他只是在后端创建一个查询作业(某种异步/非阻塞进程),然后我们仍然必须执行 Jobs: getQueryResults(如果我们有 jobId)或 Tabledata: list 以获取查询结果(数据).. 我认为两者的工作方式(同步/阻塞)与 Jobs: query?!

非常感谢!

干杯!

【问题讨论】:

是的,您已经正确解释了差异。请注意,在大多数情况下,您可能希望使用client library,因此您无需担心 REST API 的详细信息。 谢谢!是的,只是在确认..总是很高兴知道引擎盖下的事情是如何运作的;)。我发布了另一个澄清:客户端库以及***.com/questions/51072806/…,如果您也可以澄清这一点,请......干杯! 我不熟悉这种变化,但希望其他人可以提供帮助。对于这个问题,请考虑将其结构化为“问题”是 jobs.queryjobs.insert 的不同之处,然后添加一个带有解释的答案(正如您已经写的那样)。 您好,请问您可以提供您的问题的答案作为答案吗?非常感谢 【参考方案1】:

所以我的理解是正确的:

Jobs: query POSTone 立即在其响应正文中返回查询结果(数据)(同步/阻塞过程排序)

Jobs: insert (with a 'query' job) POST 只是在后端创建一个查询作业(某种异步/非阻塞进程),然后我们仍然必须执行 Jobs: getQueryResults (如果我们有 jobId) 或 Tabledata: list 以便获取查询结果(数据).. 我认为两者的工作方式(同步/阻塞)与 Jobs 相同:查询

【讨论】:

以上是关于BQ API ::查询与插入('查询')作业的主要内容,如果未能解决你的问题,请参考以下文章

Java - 一次插入一行到谷歌大查询?

具有目标表的bq查询的定价

BQ 命令行工具出错:无法在没有项目 ID 的情况下启动作业

google.api_core.exceptions.ResourceExhausted: 429 查询 bigquery 时收到的消息大于最大值

如何在 Datalab 的 api 中使用 Bigquery 中的子查询?

在 Bigquery 中的分区表上插入查询