2017-07-03 33 views
0

我有以下要求。是否有元数据表来检查BigQuery中的表是否已分区?

我们根据特定的功能分组在BQ中分割了1400个表格。 这些单独的分片表的最大值也为DAY进行了时间分区。

小表没有时间分区。

我试图在BigQuery中动态创建视图,方法是在_partition时间内执行所有分片表的联合并写入WHERE过滤器条件。

但问题是可能有更小的表没有时间分区,查询失败。

还有更多的表格在日常基础上创建,我无法解决静态排除解决方案,因为这需要手动维护表名等文件(Apache Beam + BQ使用正在进入的数据并创建新的分片表更新的功能组没有人工干预)

我试图通过使用bq实用程序连接到BQ超过1000次,以检查表是时间分区排除非时间分区的表。

bq show --format = prettyjson 并检查“timepartitioning”“type”字段。

这是非常缓慢的,并没有我所期望的那么快。 (超过30分钟)

我试过TABLES_SUMMARY但它没有分区信息。我也检查了 SELECT partition_id from [mydataset.table1 $ PARTITIONS_SUMMARY];

但是,如果表已经分区,这个工作。

问候。

回答

0

不幸的是,没有办法来动态确定它。

作为一种解决方法,我建议将分区表和非分区表保存在不同的数据集中,或者包含有关表是否以其名称分区的信息。

您还可以维护一个已知被分区的表前缀列表(如果维护起来更容易,那么它是非分区的)。

您还可以在BigQuery的公开问题跟踪器上打开功能请求:https://issuetracker.google.com/issues/new?component=187149&template=0