监控 BI Engine

BigQuery BI Engine 使用内存缓存和更快的执行速度,加快 BigQuery 在 BI 场景中的速度。您可以使用 INFORMATION_SCHEMACloud Monitoring 指标监控加速详情。

Cloud Monitoring

您可以使用 Cloud Monitoring 监控 BigQuery BI Engine 并为其配置提醒。如需了解如何为 BI Engine 指标创建信息中心,请参阅创建图表

BigQuery BI Engine 提供以下指标:

资源 指标 详情
BigQuery 项目 预留的总字节数 分配给一个 Google Cloud 项目的总容量
BigQuery 项目 预留的已用字节数 一个 Google Cloud 项目中所用的总容量
BigQuery 项目 BI Engine 排名前列的表缓存字节数 每个表的缓存用量。此指标显示每个区域报告的前 N 个表使用情况。

BI Engine 的查询统计信息

本部分介绍了如何查找查询统计信息,以帮助监控、诊断 BI Engine 的使用情况并进行问题排查。

BI Engine 加速模式

启用 BI Engine 加速后,您的查询可以在以下四种模式下运行:

BI_ENGINE_DISABLED
BI Engine 停用了加速模式。biEngineReasons 指定了更详细的原因。该查询使用 BigQuery 执行引擎运行。
PARTIAL_INPUT
部分查询输入已使用 BI Engine 加速。如查询优化和加速中所述,查询计划通常分解为多个输入阶段。BI Engine 支持信息中心中常用的子查询模式类型。如果查询包含多个输入阶段,其中只有部分输入阶段属于受支持的用例,则 BI Engine 会使用常规 BigQuery 引擎运行不受支持的阶段,而不进行加速。在这种情况下,BI Engine 会返回 PARTIAL 加速代码,并使用 biEngineReasons 填充未加速其他输入阶段的原因。
 FULL_INPUT
 
查询的所有输入阶段都使用 BI Engine 进行了加速。缓存的数据会在多个查询中重复使用,并且会加快读取数据后立即进行的计算。
 FULL_QUERY
 
整个查询都使用 BI Engine 进行了加速。

查看 BigQuery API 作业统计信息

关于 BI Engine 的详细统计信息可以通过 BigQuery API 获得。

如需提取与 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 字段,请参阅作业参考

BigQuery 信息架构统计信息

BI Engine 加速统计信息包含在 BigQuery INFORMATION_SCHEMA 视图中,位于 INFORMATION_SCHEMA.JOBS_BY_* 视图的 bi_engine_statistics 列中。例如,以下查询返回当前项目在过去 24 小时内所有作业的 bi_engine_statistics

SELECT
  creation_time,
  job_id,
  bi_engine_statistics
FROM
  `region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
WHERE
  creation_time >
     TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
  AND job_type = "QUERY"

使用以下格式为 INFORMATION_SCHEMA 视图中的 project-idregionviews 指定区域性

`PROJECT_ID`.`region-REGION_NAME`.INFORMATION_SCHEMA.VIEW

查看 Looker Studio 信息架构详细信息

您可以通过查看 INFORMATION_SCHEMA.JOBS 视图来跟踪 BigQuery 使用了哪些 Looker Studio 报告和数据源。BigQuery 中的每个 Looker Studio 查询都会创建一个带有 report_iddatasource_id 标签的条目。打开报告或数据源页面时,这些 ID 会显示在 Looker Studio 网址的末尾。例如,网址为 https://lookerstudio.google.com/navigation/reporting/my-report-id-123 的报告的 ID 为 "my-report-id-123"

以下示例展示了如何查看报告和数据源:

查找每个 Looker Studio BigQuery 作业的报告和数据源网址

-- Standard labels used by Looker Studio.
DECLARE requestor_key STRING DEFAULT 'requestor';
DECLARE requestor_value STRING DEFAULT 'looker_studio';

CREATE TEMP FUNCTION GetLabel(labels ANY TYPE, label_key STRING)
AS (
  (SELECT l.value FROM UNNEST(labels) l WHERE l.key = label_key)
);

CREATE TEMP FUNCTION GetDatasourceUrl(labels ANY TYPE)
AS (
  CONCAT("https://lookerstudio.google.com/datasources/", GetLabel(labels, 'looker_studio_datasource_id'))
);

CREATE TEMP FUNCTION GetReportUrl(labels ANY TYPE)
AS (
  CONCAT("https://lookerstudio.google.com/reporting/", GetLabel(labels, 'looker_studio_report_id'))
);

SELECT
  job_id,
  GetDatasourceUrl(labels) AS datasource_url,
  GetReportUrl(labels) AS report_url,
FROM
  `region-us`.INFORMATION_SCHEMA.JOBS jobs
WHERE
  creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
  AND GetLabel(labels, requestor_key) = requestor_value
LIMIT
  100;

查看使用报告和数据源生成的作业

-- Specify report and data source id, which can be found at the end of Looker Studio URLs.
DECLARE user_report_id STRING DEFAULT '*report id here*';
DECLARE user_datasource_id STRING DEFAULT '*datasource id here*';

-- Looker Studio labels for BigQuery.
DECLARE requestor_key STRING DEFAULT 'requestor';
DECLARE requestor_value STRING DEFAULT 'looker_studio';
DECLARE datasource_key STRING DEFAULT 'looker_studio_datasource_id';
DECLARE report_key STRING DEFAULT 'looker_studio_report_id';

CREATE TEMP FUNCTION GetLabel(labels ANY TYPE, label_key STRING)
AS (
  (SELECT l.value FROM UNNEST(labels) l WHERE l.key = label_key)
);

SELECT
  creation_time,
  job_id,
FROM
  `region-us`.INFORMATION_SCHEMA.JOBS jobs
WHERE
  creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
  AND GetLabel(labels, requestor_key) = requestor_value
  AND GetLabel(labels, datasource_key) = user_datasource_id
  AND GetLabel(labels, report_key) = user_report_id
ORDER BY 1
LIMIT 100;

Cloud Logging

BI Engine 加速是 BigQuery 作业处理的一部分。如需检查特定项目的 BigQuery 作业,请查看 Cloud Logging 页面,其中载荷为 protoPayload.serviceName="bigquery.googleapis.com"

后续步骤