BigQuery Python客户端如何获取列级分区表分区列名过滤流式缓冲区数据
BigQuery获取列级分区表分区列名的可用方法
你可以通过以下3种方式快速获取对应表的分区列名:
- 方法1:查询
INFORMATION_SCHEMA.COLUMNS表结构元数据视图
执行如下SQL即可直接返回分区列名称,多分区场景会返回多条结果:SELECT column_name FROM `你的项目ID.你的数据集名.INFORMATION_SCHEMA.COLUMNS` WHERE table_name = '你的表名' AND is_partitioning_column = 'YES'; - 方法2:使用bq CLI命令行工具
执行如下命令,返回的JSON结果中,timePartitioning.field(时间类型分区表)或rangePartitioning.field(范围类型分区表)对应的取值就是分区列名:bq show --format=json 你的项目ID:你的数据集名.你的表名 - 方法3:使用BigQuery SDK的get_table方法(以Python为例)
之前用get_table没拿到是没访问对应属性,参考如下代码直接读取即可:from google.cloud import bigquery client = bigquery.Client() table_obj = client.get_table("你的项目ID.你的数据集名.你的表名") # 时间分区表取该属性 partition_col = table_obj.time_partitioning.field # 范围分区表替换为以下代码 # partition_col = table_obj.range_partitioning.field
拿到分区列名后,添加WHERE 分区列名 IS NOT NULL的过滤条件即可正常排除流式缓冲区中的未分区数据。
内容的提问来源于stack exchange,提问作者Hutch
相关产品推荐
相关产品推荐

