Google bigquery 如何检查bigquery日分区是否为空

Google bigquery 如何检查bigquery日分区是否为空,google-bigquery,Google Bigquery,要检查表是否存在,我们可以使用此查询,它非常便宜: #legacySql SELECT last_modified_time FROM {dataset}.__TABLES__ WHERE table_id='{table}' LIMIT 1 是否有类似的廉价查询来检查分区是否为空 据我所知,我可以在where子句中使用select with _PARTITIONTIME,但如果它存在,不管limit子句如何,它都会处理分区中的所有数据。我必须检查是否存在多个分区,并且必须以查询的形式进行检查

要检查表是否存在,我们可以使用此查询,它非常便宜:

#legacySql
SELECT last_modified_time FROM {dataset}.__TABLES__ WHERE table_id='{table}'
LIMIT 1
是否有类似的廉价查询来检查分区是否为空

据我所知,我可以在where子句中使用select with _PARTITIONTIME,但如果它存在,不管limit子句如何,它都会处理分区中的所有数据。我必须检查是否存在多个分区,并且必须以查询的形式进行检查,而不是API请求

我有可能多次运行的cronjobs,但我只想在分区为空时将数据写入分区

#legacySql
    SELECT 
      partition_id
    FROM 
      [DATASET.TABLE$__PARTITIONS_SUMMARY__]
    WHERE 
      partition_id = "20171224"

请参阅以了解更多详细信息:

下面的查询便宜到$0,所以您可以安全地使用此方法来标识任何分区中的行数

标准SQL 选择_PARTITIONTIME作为pt,COUNT1 cnt 来自'yourproject.yourdataset.yourpartitionedtable` 按pt分组 pt=时间戳'2016-12-11' 下面是另一个选项——如果分区为空,它实际上返回0,否则返回分区中的行数

标准SQL 选择IFNULL 从“yourproject.yourdataset.yourpartitionedtable”中选择COUNT1` 分组依据_PARTITIONTIME,其_PARTITIONTIME=时间戳'2016-11-11' ,0碳纳米管
我相信这有区别空分区返回结果和不存在分区不返回结果的优点