BigQuery BI Engine SQL 接口概览

BI Engine SQL 接口简介

BigQuery BI Engine 是一项高速内存分析服务,可让用户分析 BigQuery 中存储的数据,支持亚秒级查询响应时间和高并发操作。

BI Engine SQL 接口扩展了 BI Engine 以与其他商业智能 (BI) 工具(例如 Looker、Tableau、Power BI)和自定义应用集成,以加快数据探索和分析速度。本页面简要介绍了 BI Engine SQL 接口,以及它为预览版 BI Engine 带来的扩展功能。

获取对预览版的访问权限

在预览版期间,可通过完成注册过程对 BI Engine SQL 接口进行访问。如需了解详情,请参阅 BI Engine 预览版注册文档

在预览期间增加预留大小

如果您需要超出默认大小 100 GB 的预留内存,可以请求增加。预留内存的增加根据具体情况进行评估,仅适用于部分区域。

BI Engine 架构

BI Engine SQL 接口基于现有 Google 数据洞察架构的 BI Engine 构建。下图显示了更新后的 BI Engine 架构:

BI Engine 架构

此 BI Engine 预览版包括以下内容:

  1. BigQuery API:BI Engine 直接与 BigQuery API 集成。通过 REST JDBC 和 ODBC 驱动程序等标准机制使用 BigQuery API 的任何 BI 解决方案或自定义应用都可以使用 BI Engine,而无需进行任何更改。
  2. 矢量化运行时:BI Engine 通过 BI Engine SQL 接口,引入了一种称为“矢量处理”的现代技术。在执行引擎中使用矢量化处理,可以一次性批量处理数据,从而更高效地使用现代 CPU 架构。BI Engine 还使用高级数据编码(具体来说是字典运行时长编码)来进一步压缩存储在内存层中的数据。
  3. 元数据:元数据存储表和视图定义、架构定义和精细权限。
  4. 预留:BI Engine 预留在项目结算级别管理内存分配。BI Engine 仅缓存查询或扫描的列和分区。它不会缓存整个表。
  5. 分布式内存引擎:BI Engine 是一种分布式内存执行引擎,可让客户分配更大容量的内存预留。

查询优化和加速

BigQuery 会通过扩展 BI Engine 将为 SQL 查询生成的查询计划分解为子查询。子查询包含许多操作,例如扫描、过滤或聚合数据,这通常是一个分片上的执行单元。

虽然 BI Engine SQL 接口正确执行了 BigQuery 支持的所有 SQL 查询,但 BI Engine SQL 接口的预览版本仅优化特定子查询。具体而言,它最适合从存储空间扫描数据的叶级子查询,并执行过滤、计算、聚合、排序和某些类型的连接等操作。BI Engine 尚未完全加速的其他子查询将还原回 BigQuery 来执行。

由于这种选择性优化,更简单的 BI 或信息中心类型查询(会导致子查询数量减少)从 BI Engine 中获益最大,因为大部分执行时间都花在处理原始数据的叶级子查询上。

限制

以下列表介绍了使用此预览版本的 BI Engine 时,如何以及何时加速查询:

  • 在叶级子查询中,加速功能仅限于标准 SQL 函数和运算符
  • 在此预览期间,每个 Google Cloud 项目的 BI Engine 容量不得超过 100 GB。您可以申请增加预留容量。
  • 预览期间不支持 BigQuery 流式提取。
  • 以下限制适用于行大小和行数:
    • 仅引用一个表(例如 GROUP-BYFILTER 查询)的简单查询主要受预留大小的限制。
    • 对于联接,仅限通过 INNERLEFT OUTER 联接的叶级子查询进行加速,其中,一个大型(事实)表最多与四个小型且未分区(维度)的表联接,每个表引用列的大小不超过 500 万行或 5 GB。
  • 不支持引用通配符表的查询。
  • 此预览版 BI Engine 仅在部分地区提供。如需了解详情,请参阅支持的区域

监控和诊断

本部分介绍如何查找 BI Engine 的统计信息,以及 BI Engine 如何与 Cloud Monitoring 集成。

加速统计信息

关于 BI Engine 的详细统计信息可以通过作业统计信息 API 获得。您可以使用 bq 命令行工具提取与 BI Engine 加速查询关联的统计信息。

启用 BI Engine 加速后,您可以在以下三种模式的任何一种中运行查询:


DISABLED
BI Engine 停用了加速模式。biEngineReasons 指定了更详细的原因。该查询使用 BigQuery 执行引擎运行。

PARTIAL
该查询部分已使用 BI Engine 加速。如查询优化和加速中所述,查询计划通常分解为多个子查询。此 BI Engine 预览版支持信息中心中常用的子查询模式类型。如果查询包含多个子查询,其中只有部分子查询属于受支持的用例,则 BI Engine 会使用常规 BigQuery 引擎执行其余子查询。这些剩余子查询不会接收 BI Engine 加速。在这种情况下,BI Engine 会返回 PARTIAL 加速代码,并使用 biEngineReasons 填充未加速其他子查询的原因。

 FULL
 
所有查询都使用 BI Engine 加速。

如需提取与 BI Engine 加速查询关联的统计信息,请运行以下 bq 命令行工具命令:

bq show --format=prettyjson -j job_id

如果项目启用了 BI Engine 加速,则输出会生成一个新字段 biEngineStatistics。下面是一个作业报告示例:

 "statistics": {
    "creationTime": "1602175128902",
    "endTime": "1602175130700",
    "query": {
      "biEngineStatistics": {
        "biEngineMode": "DISABLED",
        "biEngineReasons": [
          {
            "code": "UNSUPPORTED_SQL_TEXT",
            "message": "Detected unsupported join type"
          }
        ]
      },

如需详细了解 BiEngineStatistics 字段,请参阅作业参考

Cloud Monitoring

BI Engine 与 Cloud Monitoring 集成,可为您显示用于监控和警报的关键指标。以下是要监控的指标:

资源类型 指标名称 说明
项目 预留的总字节数 在一个 Cloud 项目中分配的总容量。
项目 预留的已用字节数 一个 Cloud 项目内使用的总容量。

反馈和更新

注册预览后,您可以在论坛中发布问题和评论。我们还使用此群组在预览阶段提供正在进行的改进和功能的更新。

价格

如需了解当前价格模式,请参阅 BI Engine 价格页面

支持的区域

与 BigQuery 类似,BI Engine 是一种区域多区域资源。 BI Engine 在 BigQuery 内数据所在的同一区域中处理数据。

BI Engine SQL 接口的预览阶段支持以下位置。

区域位置

区域说明 单区域名称
美洲
爱荷华 us-central1
拉斯维加斯 us-west4
洛杉矶 us-west2
蒙特利尔 northamerica-northeast1
北弗吉尼亚 us-east4
俄勒冈 us-west1
盐湖城 us-west3
圣保罗 southamerica-east1
南卡罗来纳 us-east1
多伦多 northamerica-northeast2
欧洲
比利时 europe-west1
芬兰 europe-north1
亚太地区
新加坡 asia-southeast1
悉尼 australia-southeast1
东京 asia-northeast1

多区域位置

多区域说明 多区域名称
欧盟成员国的数据中心1 EU
美国的数据中心 US

1 位于 EU 多区域的数据不会存储在 europe-west2(伦敦)或 europe-west6(苏黎世)数据中心中。