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

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

【问题讨论】:

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

标签: python google-bigquery


【解决方案1】:

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

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

【讨论】:

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

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

【讨论】:

    猜你喜欢
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    • 2014-06-25
    • 2021-04-16
    • 1970-01-01
    • 2015-07-07
    相关资源
    最近更新 更多