繁体   English   中英

使用 Google BigQuery 的 Python 客户端创建无聚合的物化视图

[英]Create materialized view without aggregation using Python Client for Google BigQuery

我正在尝试使用 BigQuery 的 Python 客户端来创建物化视图。 文档有这个示例代码:

from google.cloud import bigquery

bigquery_client = bigquery.Client()

view_id = "my-project.my_dataset.my_materialized_view"
base_table_id = "my-project.my_dataset.my_base_table"
view = bigquery.Table(view_id)
view.mview_query = f"""
SELECT product_id, SUM(clicks) AS sum_clicks
FROM  `{base_table_id}`
GROUP BY 1
"""

# Make an API request to create the materialized view.
view = bigquery_client.create_table(view)
print(f"Created {view.table_type}: {str(view.reference)}")

当我修改此代码时,它会在 BigQuery 中创建一个,而不是一个物化视图。

google.cloud.bigquery.table.Table object 有一个table_type属性,当前设置为 None。 如果我在运行create_table()方法之前尝试将其设置为“MATERIALIZED_VIEW”,则会出现错误:

(AttributeError:无法设置属性)

我可以使用以下 SQL 从 Cloud Console 成功创建物化视图,但我需要能够使用 Python 部署创建表。

CREATE MATERIALIZED VIEW  project-id.my_dataset.my_mv_table
AS SELECT product_id, SUM(clicks) AS sum_clicks
FROM  project-id.my_dataset.my_base_table

我正在使用 google.cloud 2.1.0 版,Python 3.7.6 版

问题是 google-cloud-bigquery 的版本太旧了。 我更新到 2.6.0,其中添加了对物化视图的支持,如此所述,它按预期工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM