分区表-空或不存在

时间:2020-07-03 01:51:26

标签: google-bigquery

最近,我一直在使用摄取时间将带日期后缀的表转换为分区表。但是,在分区表中,我们如何知道某个日期是否不包含数据或表创建失败?

这里有更多详细信息,

  1. 以前,每天都创建表,但是可以确定某些表为空,因为没有结果符合条件。例如,
daily_table_20200601 (100 rows)
daily_table_20200602 (0 rows)
daily_table_20200603 (10 rows)

在这种情况下,我可以看到表daily_table_20200602存在,所以我知道我的预定作业成功运行。

  1. 例如,使用摄取时间切换到分区表时,我每天都在写表daily_table中,
daily_table$20200601 (100 rows)
daily_table$20200602 (0 rows)
daily_table$20200603 (10 rows)

但是我们如何知道表daily_table$20200602是成功创建还是只是空的?

还有一些有趣的东西。我正在使用API​​检查分区表是否存在,请参见以下代码,

dataset_ref = client.dataset('dataset_name')
table_ref = dataset_ref.table("daily_table$20210101")
client.get_table(table_ref)

结果显示该表存在。那么我们能够检查某个日期表是否存在?

1 个答案:

答案 0 :(得分:1)

每个分区都没有单独的(日期表),因为分区不会创建单独的分区表,所以它类似于关系数据库分区

插入时间分区方法为日期分区(_PARTITIONTIME,_PARTITIONDATE)和小时分区(_PARTITIONTIME)添加了一个伪列,其中将包含插入数据或小时开始的时间戳,并相应地对表进行分区,

此代码:

dataset_ref = client.dataset('dataset_name')
table_ref = dataset_ref.table("daily_table$20210101")
client.get_table(table_ref)

只要分区表存在,此操作就会成功