【问题标题】:Create materialized view without aggregation using Python Client for Google BigQuery使用 Python Client for Google BigQuery 创建不聚合的物化视图
【发布时间】:2022-01-22 12:45:26
【问题描述】:

我正在尝试使用 Python Client for BigQuery 来创建具体化视图。 documentation 有这个示例代码:

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 对象有一个table_type 属性,当前设置为无。如果我在运行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 版

【问题讨论】:

    标签: python google-bigquery materialized-views


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2021-05-04
      • 2020-09-19
      • 2021-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-08
      • 1970-01-01
      • 2012-11-16
      相关资源
      最近更新 更多