BigQuery - 物化视图



除了创建表和视图外,BigQuery 还方便创建物化视图。

什么是物化视图?

物化视图类似于表,因为它也是数据的“快照”。但是,物化视图的不同之处在于,真正的物化视图会动态更新,而无需运行查询。

物化视图的类型

广义上讲,有两种物化视图:

  • 已保存为表并会定期从外部来源更新的视图。
  • 在 BigQuery Studio 中创建的“真正”物化视图。

以下是第一种视图的示例架构:

  • SQL 查询现有视图
  • 在 Python 脚本中,该视图被转换为数据帧
  • 数据帧上传到 BigQuery
  • 物化视图被追加或覆盖

由于上述方法是一个多步骤过程,BigQuery 简化了物化视图的创建和维护。

创建 BigQuery 物化视图

用户可以通过运行 **CREATE MATERIALIZED VIEW** SQL 语句来创建 BigQuery 物化视图,后跟:

  • 项目
  • 数据集
  • 新的物化视图名称
  • SQL 语句

示例

这是一个示例,其中一个包含假设销售数据的现有表被物化:

Creating a BigQuery Materialized View

请注意 BigQuery 文档中列出的以下 **限制**:

  • 每个表在一个数据集内最多可包含 20 个物化视图
  • 一个项目中最多只能有 100 个物化视图
  • 一个组织中最多只能有 500 个物化视图

在 BigQuery 中编写简单的 SQL 脚本

现在将所有内容整合在一起,是时候编写一个简单的脚本,该脚本将:

  • 使用动态变量
  • 删除昨天的数据
  • 将新数据插入表中
  • 使用查询选择/加载数据

到目前为止,尚未介绍如何在 SQL 脚本中定义和使用变量。

在 BigQuery 中,**变量语法**如下:

DECLARE variable_name TYPE DEFAULT function used to create dynamic variable

例如:

DECLARE yesterday DATE DEFAULT DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY)

我们将以此开始以下脚本,该脚本将删除奥斯汀共享单车分区表中的先前数据,并且只插入最新数据。

Write a Simple SQL Script in BigQuery

在 BigQuery 中运行此脚本时,由于分号的存在,SQL 引擎将分阶段运行它。可以通过单击“查看结果”来查看最终结果。

Write a Simple SQL Script in BigQuery

单击 **“查看结果”** 将生成此输出。

Write a Simple SQL Script in BigQuery

最后,我们可以看到添加到表中的新行。

New Rows Added Table
广告