仅当查询不为空时,才从查询写入 BigQuery 中的表

Posted

技术标签:

【中文标题】仅当查询不为空时,才从查询写入 BigQuery 中的表【英文标题】:Write from a query to table in BigQuery only if query is not empty 【发布时间】:2016-09-21 12:41:28 【问题描述】:

在 BigQuery 中,可以将查询结果写入新表。我希望仅在查询返回至少一行时才创建表。基本上我不想最终创建空表。我找不到这样做的选项。 (我使用的是 Python 库,但我想这同样适用于原始 API)

【问题讨论】:

你不能使用某种默认值吗?如果 EMPTY 则使用默认值? @xCloudx8 不确定我们是否在同一页面上。我在说这个:***.com/a/14634697/825190 我也不明白,bigquery 中的每个查询都已经创建了一个表,即使它是匿名的。如果表不为空,则必须有第二个操作来重写某个表。据我所知,你无法避免这种情况。 【参考方案1】:

由于您必须在查询定义中指定目标,并且您不知道运行时它会返回什么,您可以在末尾添加 LIMIT 1 吗?

您可以检查job result object 中的行号,然后如果新表中有结果,则重新运行不带限制器的查询。

【讨论】:

对不起,我忘了提这个。当然,可以按照您的建议分两步完成。我的问题是关于在一个电话内完成。 我在 BigQuery 中的时间不长,但您似乎无法按照您的要求进行操作。查询运行并将结果放入表或内存/应用程序中,并且必须在查询运行之前定义。【参考方案2】:

无法一步完成。如果中间输出至少包含一行,我建议运行查询,检查结果,然后使用 WRITE_TRUNCATE 执行表复制以将结果提交到最终位置。

【讨论】:

以上是关于仅当查询不为空时,才从查询写入 BigQuery 中的表的主要内容,如果未能解决你的问题,请参考以下文章

MSSQL - 仅当所有值都不为空时才插入值

仅当变量不为空时,如何应用 Hasura `where` 过滤器?

SwiftUI:仅当输入不为空时才启用保存按钮

仅当表不为空时,T-SQL 才连接表

Bigquery 仅在不为空时选择列

仅当 Mono 为空时如何执行操作,如果不为空则抛出错误