首页 > 解决方案 > 分区表 - 空或不存在

问题描述

最近,我一直致力于使用摄取时间将日期后缀表转换为分区表。但是,在分区表中,我们如何知道某个日期是否没有数据或者表没有创建成功呢?

这里有更多细节,

  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)

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

标签: google-bigquery

解决方案


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

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

对于此代码:

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

只要分区表存在,这就会成功


推荐阅读