在 BigQuery 中查询关联的数据集

本文档介绍了如何为日志存储桶创建关联的数据集,以及如何查询和查看该数据集中的日志。例如,您可以 创建关联的数据集,以便您可以通过以下方法在 Log Analytics 上运行查询: 使用预留的 BigQuery 槽。 同样,您可能需要关联的数据集,以便在 BigQuery 或 Looker Studio 中编写查询,将日志数据与其他业务数据联接起来。

如果您不熟悉 Log Analytics,请参阅 Log Analytics 概览

何时需要关联的数据集

您无需关联 BigQuery 数据集,即可向 Log Analytics 页面上的日志视图发出查询。您可以节省 并共享这些查询,即可将结果保存到自定义信息中心。

执行此操作时,您需要一个关联的 BigQuery 数据集 以下任意一项:

  • 将日志条目数据与其他 BigQuery 数据集联接。
  • 从其他服务(例如 BigQuery Studio 页面或 Looker Studio。
  • 通过在 BigQuery 预留槽中运行从 Log Analytics 运行的查询,提升查询性能

借助日志存储桶的关联 BigQuery 数据集, BigQuery 拥有对底层数据的读取权限。

如果您在预留的 BigQuery 槽上运行查询 那么您的查询 容量计算价格。此外,如果您 使用 Log Analytics 以外的服务查询数据, 那么您的查询可能 基于该服务收费。请参阅您所需的服务的价格页面 使用的技术。

准备工作

在使用 Log Analytics 之前,请执行以下操作:

  • 如需获取使用 Log Analytics 所需的权限, 请让管理员授予您 项目的以下 IAM 角色:

    • 如需查询 _Required_Default 日志存储分区,请执行以下操作: 日志查看器 (roles/logging.viewer)
    • 如需查询项目中的所有日志视图,请使用以下角色: Logs View Accessor (roles/logging.viewAccessor)

    您可以将主账号限制为只能访问特定的日志视图,方法是添加 授予 Logs View Accessor 角色的 IAM 条件 项目级别,或者通过向 政策文件。如需了解详情,请参阅控制对日志视图的访问权限

    这些权限与您查看日志条目所需的权限相同 在 Logs Explorer 页面上。有关 查询用户定义的存储分区的视图或 查询 _Default_AllLogs 视图 日志存储桶,请参阅 Cloud Logging 角色

  • 如需获得创建和查询关联数据集所需的权限,请让管理员向您授予存储日志存储桶的项目的以下 IAM 角色:

    • 如需创建和查看关联的数据集,请使用以下角色: Logs Configuration Writer (roles/logging.configWriter)
    • 如需使用预留的 BigQuery 槽对关联的数据集运行查询,请执行以下操作:
    • 如需在 BigQuery Studio 中查看关联的数据集,请授予此步骤中提及的所有角色以及以下角色。您可以向数据集或项目授予此角色: BigQuery Data Viewer (roles/bigquery.dataViewer)

  • 确保您的日志存储分区已升级为使用 Log Analytics:

    1. 在 Google Cloud 控制台中,转到日志存储页面:

      前往日志存储

      如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。

    2. 对于具有您要查询的日志视图的每个日志存储桶, 确保 Log Analytics available 列显示打开。如果系统显示升级,请点击升级并完成对话框。
  • 如果您想使用预留的 BigQuery 槽位从日志分析页面查询日志数据,并且您使用的是包含 Virtual Private Cloud (VPC) Service Controls 的项目,请确保您使用的是 BigQuery 企业版。 如需了解详情,请参阅 了解 BigQuery 版本

如需使用 BigQuery 的功能分析日志数据,请升级日志存储桶以使用 Log Analytics,然后创建关联的数据集。采用此配置时,Logging 会存储日志数据,但 BigQuery 可以读取日志数据。

Google Cloud 控制台

为现有 BigQuery 数据集创建关联 日志存储桶,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到日志存储页面:

    前往日志存储

    如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。

  2. 找到日志存储桶并验证 Log Analytics 可用 列会显示打开

    如果此列显示升级,则表示日志存储桶尚未 已升级为使用 Log Analytics。配置 Log Analytics:

    1. 点击升级
    2. 在对话框中点击确认

    升级完成后,请继续执行下一步。

  3. 在日志存储桶上,点击更多图标 ,然后点击修改存储桶

    系统随即会打开修改日志存储桶对话框。

  4. 选择创建关联到此存储桶的新 BigQuery 数据集,然后输入新数据集的名称。

    每个 Google Cloud 项目的数据集名称不得重复。如果您输入 现有数据集的名称,则会收到以下错误: Dataset name must be unique in the selected region.

  5. 点击完成,然后点击更新存储桶

    在 Logging 在日志存储空间页面上显示关联的数据集名称后,BigQuery 可能需要几分钟时间才能识别该数据集。

gcloud

如需为升级为使用日志分析的日志桶创建关联数据集,请运行 gcloud logging links create 命令:

gcloud logging links create LINK_ID --bucket=BUCKET_ID --location=LOCATION

您提供的 LINK_ID 将用作 BigQuery 数据集的名称,并且此字段的值必须是 是唯一的

links create 命令是异步的。异步方法的返回值是一个 Operation 对象,其中包含有关方法进度的相关信息。当 方法完成时,Operation 对象会包含相应状态。有关 相关信息,请参阅异步 API 方法

links create 命令需要几分钟才能完成。

例如,以下命令会为名为 my-bucket 的存储桶创建关联的数据集:

gcloud logging links create mylink --bucket=my-bucket --location=global

每个 Google Cloud 项目的数据集名称必须是唯一的。如果您尝试创建与现有数据集同名的其他数据集,则会收到以下错误:

BigQuery dataset with name "LINK_ID" already exists.

如果您尝试为未升级为使用 Log Analytics 的日志存储桶创建关联的数据集,系统会报告以下错误:

A link can only be created for an analytics-enabled bucket.

REST

为现有日志存储桶创建关联的 BigQuery 数据集 使用 Log Analytics,调用异步 projects.locations.buckets.links.create 方法。

请按以下步骤准备方法的参数:

  1. create 命令构建请求正文。请求正文的格式为 Link 对象。
  2. 对于命令的查询参数,请使用 linkId=LINK_ID。您提供的 LINK_ID 将用作 BigQuery 数据集的名称,并且此字段的值必须是 在您的 Google Cloud 项目中是唯一的。

对异步方法的响应是一个 Operation 对象。此对象包含有关该方法进度的相关信息。当 方法完成时,Operation 对象会包含相应状态。如需了解详情,请参阅异步 API 方法

links.create 方法需要几分钟才能完成。

每个 Google Cloud 项目的数据集名称不得重复。如果您尝试创建与现有数据集同名的其他数据集,则会收到以下错误:

BigQuery dataset with name "LINK_ID" already exists.

如果您尝试为未升级为使用 Log Analytics 的日志存储桶创建关联的数据集,系统会报告以下错误:

A link can only be created for an analytics-enabled bucket.

从 BigQuery 运行查询

如果您有一个使用 Log Analytics 和关联数据集的日志存储桶, 您可以使用 BigQuery Studio 查看和查询关联的数据集 页面。采用这种配置后,您可以使用仅在 BigQuery Studio 中提供的命令、工作流和数据集来分析数据集。

如需从 Log Analytics 打开 BigQuery,然后查询关联的数据集,请执行以下操作:

  1. 确保您要查询的日志视图所在的日志桶存在关联的数据集:

    1. 在 Google Cloud 控制台中,转到日志存储页面:

      前往日志存储

      如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。

    2. 找到日志存储桶,然后验证 BigQuery 关联的数据集列是否显示了网址。如果条目为空,则您必须创建 关联的数据集。有关这些步骤的信息,请参阅 创建关联的 BigQuery 数据集

  2. 在 Google Cloud 控制台中,前往 Log Analytics 页面:

    转到 Log Analytics

    如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。

  3. 日志视图列表中,找到日志视图,然后选择查询查询窗格中会填充默认查询。您还可以在查询窗格中输入查询,或修改显示的查询。

  4. 在工具栏中,展开标有运行查询的按钮,或 在 BigQuery 上运行,然后选择在 BigQuery 中打开

    系统会打开 BigQuery Studio 页面。FROM 该查询的语句被修改为指定 关联数据集 BigQuery 表路径语法

    您还可以修改显示的查询。

  5. BigQuery Studio 页面上,点击运行查询

对预留的 BigQuery 槽运行 Log Analytics 查询

如需尽可能缩短 Log Analytics 查询的执行时间,请在预留的 BigQuery 槽中运行这些查询。Log Analytics 页面已预配置为使用默认的 Log Analytics 服务,这意味着您的查询必须与其他查询竞争有限的槽位空间。如果没有可用的槽,查询的执行会延迟。您可以通过在预留的 BigQuery 槽上运行查询来消除这些延迟。

如需向日志视图发出 SQL 查询,请执行以下操作:

  1. 确保您要查询的日志视图所在的日志桶存在关联的数据集:

    1. 在 Google Cloud 控制台中,转到日志存储页面:

      前往日志存储

      如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。

    2. 找到日志存储桶,然后验证 BigQuery 关联的数据集列是否显示了网址。如果该条目为空,则必须创建关联数据集。有关这些步骤的信息,请参阅 创建关联的 BigQuery 数据集

  2. 确保您已配置预留的 BigQuery 槽:

    1. 创建包含专用槽的预留
    2. 创建预留分配
  3. 配置 Log Analytics 以在您的 预留的 BigQuery 槽:

    1. 在 Google Cloud 控制台中,前往 Log Analytics 页面:

      转到 Log Analytics

      如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。

    2. 日志视图列表中,找到该视图,然后选择查询或 输入查询内容。

      如果查询窗格显示错误消息,且该消息引用 FROM 语句,则表无法解析为特定的日志视图。 如需了解如何解决此失败问题,请参阅错误 FROM clause must contain exactly one log view

    3. 转到工具栏,并确保标有在 BigQuery 上运行的按钮 。

      如果工具栏显示 Run Query,请点击 Settings,然后选择 BigQuery

      如果在 BigQuery 上运行按钮已停用,则 需要创建关联的数据集。

    4. 运行查询。

      您可以使用工具栏选项设置查询格式、清除查询,以及打开 BigQuery SQL 参考文档。

后续步骤