【问题标题】:BigQuery client python get column based partitioning column nameBigQuery 客户端 python 获取基于列的分区列名称
【发布时间】:2021-12-23 03:34:04
【问题描述】:

我希望在现有查询中包含 where 子句,以排除 BigQuery 流式缓冲区中的数据。

为此,我想获取分区列名称以便添加

WHERE partition_column IS NOT NULL;

到我现有的查询。

我一直在查看 CLI 和 get_table 方法,但是它只返回列的值而不是列名。 我在.INFORMATION_SCHEMA.PARTITIONS 上搜索时得到相同的结果,这会返回一个 partition_id 字段,但我更喜欢列名本身,是否可以得到这个?

此外,该表还设置了基于列的分区。

【问题讨论】:

  • 你为什么不使用_PARTITIONTIME 伪列来应用你的过滤器?
  • @guillaumeblaquiere _PARTITIONTIME 列在使用基于列的分区时不存在,在创建表时使用 Partition by ingestion time 时会得到伪列。

标签: python google-cloud-platform google-bigquery partitioning


【解决方案1】:

基于pythonBigQuery client documentation,使用属性time_partitioning:

from google.cloud import bigquery
bq_table = client.get_table('my_partioned_table')
bq_table.time_partitioning # TimePartitioning(field='column_name',type_='DAY')
bq_table.time_partitioning.field # column_name

小提示,如果不知道去哪里搜索,打印API repr:

bq_table.to_api_repr()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-11
    • 2017-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-24
    • 2018-12-01
    相关资源
    最近更新 更多