【发布时间】:2019-03-06 20:33:05
【问题描述】:
我正在尝试在 BigQuery 中创建聚簇表。
当我在 UI 中对其进行测试时,它运行良好:
CREATE OR REPLACE TABLE `project_id_xyz.temp.clustering`
PARTITION BY date
CLUSTER BY cluster_col AS
SELECT CURRENT_DATE() as date, 1 as cluster_col
但是,当我在 python (3.7.1) 中通过 google-bigquery==1.9.0 尝试相同操作时,表已创建并已分区但未聚集。如 UI 中的“详细信息”选项卡所示。
这是我用来创建表的 sn-p。
dataset = client.dataset("temp")
table = dataset.table("clustering_test")
job_config = bigquery.QueryJobConfig()
job_config.destination = table
job_config.write_disposition = "WRITE_TRUNCATE"
time_partitioning = TimePartitioning()
time_partitioning.field = "date"
job_config.time_partitioning = time_partitioning
job_config.clustering_fields = ["cluster_col"]
sql = """
SELECT CURRENT_DATE() as date, 1 as cluster_col
"""
query_job = client.query(
sql,
location='US',
job_config=job_config)
query_job.result()
代码看起来很简单,也不会抛出任何异常。
有什么明显的我做错了吗?
【问题讨论】:
-
您确定不需要在您的 sql 字符串中包含整个查询(正如您在 UI 中所写的)?通常,在 Java 中,我必须指定所有执行的操作以及项目/数据集/表。
-
为什么不使用客户端 API 运行相同的查询?
-
通过 job_config 以编程方式更改作业配置比尝试直接解析和更改 SQL 代码更容易。这就是为什么我猜他们的 api 提供了两种方法。
标签: python-3.x google-bigquery