BigQuery 试运行会返回啥?

Posted

技术标签:

【中文标题】BigQuery 试运行会返回啥?【英文标题】:What does a BigQuery dry run return?BigQuery 试运行会返回什么? 【发布时间】:2015-02-05 00:26:18 【问题描述】:

BigQuery 文档说:

“在表的较小分区而不是一张大表上测试您的查询。如果使用 API,请验证查询的语法并使用 dryRun 标志获取数据处理统计信息。”

但他们也说,对于 dryRun:

“如果设置,则不实际运行查询。有效查询将返回空响应,而无效查询将返回与未试运行时相同的错误。默认值为 false。 "

这些似乎是矛盾的,还是我遗漏了什么?

【问题讨论】:

它将populate the totalBytesProcessed field in the response,定义为“为此查询处理的总字节数。如果此查询是空运行,这是运行查询时将处理的字节数。” 同意斯图尔特 - 所以标志的文档充其量是很差的(我会说它完全是错误的)。 澄清一下——“空响应”与“数据处理统计”似乎是矛盾的。 请注意,即使设置了dry_run,查询也可能返回尚未完成的作业,这会带来额外的复杂性。请参阅 Returns: 字段以获取 this attribute from Python API docs 【参考方案1】:

我发现这些有点不同步,需要澄清一下。

这是对dryRun 的另一种更准确的描述。从https://cloud.google.com/bigquery/docs/reference/v2/jobs,搜索dryRun:

[可选] 如果设置,则不实际运行此作业。一个有效的查询将 返回带有一些处理统计信息的大部分为空的响应,而 一个无效的查询将返回相同的错误,如果它不是 空跑。非查询作业的行为未定义。

看起来https://cloud.google.com/bigquery/launch-checklist 文档只是在两个独立建议之间缺少一个要点。

我已经记录了一个内部跟踪错误以进行清理。感谢您提请我们注意!

【讨论】:

【参考方案2】:

不,这并不矛盾。

在我看来,第一条消息是“尝试通过打开“试运行”标志来查看您的查询是否可以运行”。

虽然第二条消息说“如果您将 DryRun 标志设置为 true,它将返回有关您的查询的统计信息,因此“totalBytesProcessed”,如果查询有效,则不会运行您的查询,并且出现与您相同的错误查询无效正常接收”

因此,将“试运行”视为语法检查器/错误检查/检查处理的字节。

【讨论】:

但它不会返回任何内容,它会返回“数据处理统计”,即将要处理的字节数。因此,标志本身的文档充其量只是误导。 在这里@GrahamWheeler,我在答案中添加了 Stuartd 的部分并将其切换到“communityWiki”,所以如果你想接受这个而不是你的,我不会得到任何代表 ^ ^

以上是关于BigQuery 试运行会返回啥?的主要内容,如果未能解决你的问题,请参考以下文章

在链接到 BigQuery 之前,有啥方法可以访问 Firebase 原始事件数据?

BigQuery 通配符表 - 有啥限制?

我使用啥 BigQuery 数据类型来支持许多十进制数字

在时间分区的 bigquery 表中,数据何时写入_UNPARTITIONED_?有啥影响?

BigQuery 和 GCP 上的存储有啥区别?

GA 到 BigQuery 导出架构中的“hits.publisher.adsRevenue”字段是啥意思?