Google Analytics 数据视图简介

本文档介绍了分析视图以及何时可能需要创建分析视图。还介绍了分析视图与您可能熟悉的概念(例如日志视图和已保存的查询)之间的区别。

如需了解如何创建、查询和管理分析视图,请参阅创建和查询分析视图

概览

分析视图是一种可查询的资源。此资源包含一个 SQL 查询,用于查询一个或多个日志视图。

日志存储分区上的日志视图可控制您可以查看日志存储分区中的哪些日志条目。您可以使用日志浏览器和 Log Analytics 页面查询日志视图。在这两种情况下,要查询的数据的格式由 LogEntry 数据结构决定。

借助分析视图中包含的 SQL 查询,您可以将一个或多个日志视图中的日志数据转换为自定义格式。也就是说,您可以过滤日志视图中哪些日志条目会贡献到查询结果,并定义结果的列。例如,您可以舍弃列、将数据从嵌套 JSON 字段移至列,或添加列。

Google Analytics 视图不是具体化视图。分析视图不是定期缓存查询结果的预计算视图。因此,查询分析视图等同于查询分析视图查询的日志视图。

分析视图和已保存的查询都包含 SQL 查询。不过,分析视图是一种可查询的资源。您可以重新运行已保存的查询,但无法查询已保存的查询的结果。

Google Analytics 数据视图的类型

Google Analytics 视图分为两种:用户定义的视图和系统定义的视图:

  • 用户定义的数据分析视图是指您创建的任何数据分析视图。您可以查询、修改和删除用户定义的 Google Analytics 视图。

  • 系统定义的数据分析视图是指由Google Cloud 服务创建的数据分析视图。您可以查询用户定义的分析视图。不过,您无法修改或删除这些信息。

如需了解如何在 Google Cloud 项目中列出分析视图,请参阅列出分析视图

Google Analytics 数据视图的位置

Google Analytics 视图的位置取决于其查询的资源的位置。例如,如果分析视图查询位于 global 位置的日志视图,则分析视图的位置也必须为 global。当您使用 Google Cloud 控制台创建 Google Analytics 数据视图时,系统会自动设置位置。

分析视图的优势

分析视图的主要优势在于,您可以转换日志数据,并为其他查询创建一致的架构。不过,您可能还会发现,通过创建数据分析视图,您可以减少编写查询所花费的精力,或改进查询的结构。由于分析视图不是具体化视图,因此使用分析视图不一定会缩短查询时间。

示例:数据转换

假设您要使用 VPC 流日志分析网络性能。您需要分析整体网络性能,还需要能够识别特定网络、IP 地址或主机。很遗憾,您需要的信息包含在日志条目的 json_payload 字段中的嵌套字段中。

如需从日志条目中提取此类信息,您可以编写以下查询,然后将该查询保存为名为 network_details 的 Google Analytics 视图:

SELECT
  JSON_VALUE(resource.labels.subnetwork_name) subnetwork_name,
  JSON_VALUE(json_payload.src_instance.vm_name) vm_name,
  JSON_VALUE(json_payload.connection.src_ip) as src_ip,
  JSON_VALUE(json_payload.connection.src_port) as src_port,
  JSON_VALUE(json_payload.connection.dest_ip) as dest_ip,
  JSON_VALUE(json_payload.connection.dest_port) as dest_port,
  CAST(JSON_VALUE(json_payload.bytes_sent) as INT64) as bytes_sent,
  CAST(JSON_VALUE(json_payload.packets_sent) as INT64) as packets_sent
FROM `TABLE_NAME_OF_LOG_VIEW`
WHERE
    log_id = "compute.googleapis.com/vpc_flows"
    AND SEARCH(json_payload.reporter, "SRC")

现在,当您想要分析网络性能时,可以查询分析视图。例如,如果您只对实例的名称和发送的数据量感兴趣,则可以编写以下查询:

SELECT vm_name, bytes_sent, packets_sent,
FROM `analytics_view.my_project.global.network_details`
ORDER BY bytes_sent DESC
LIMIT 100

示例:API 延迟时间分析的基本查询

假设您的任务是评估和汇总一周间隔的请求延迟时间。其他团队将使用每周的效果分析数据作为其他分析的基础。

您创建的分析视图(其他团队可以对其进行查询)会报告特定日志视图中日志条目记录的已完成请求的最短、最长和平均延迟时间:

SELECT week,MIN(took_ms) as min , MAX(took_ms) AS max, AVG(took_ms) AS avg
FROM (
  SELECT TIMESTAMP_TRUNC(timestamp, WEEK) AS week,
  CAST( JSON_VALUE(json_payload, '$."http.resp.took_ms"') AS INT64) as took_ms
  FROM `TABLE_NAME_OF_LOG_VIEW`
  WHERE json_payload IS NOT NULL
    AND SEARCH(labels,"frontend")
    AND JSON_VALUE(json_payload.message) = "request complete"
  ORDER BY took_ms DESC, timestamp ASC
)
GROUP BY week ORDER BY week

所需的 IAM 角色和权限

由于分析视图会查询日志视图,因此若要创建和查询分析视图,您的 IAM 角色还必须允许您查询日志视图和使用 Log Analytics。本部分列出了创建分析视图所需的 IAM 角色,以及查询日志视图和使用 Log Analytics 所需的 IAM 角色:

  • 如需获得创建、管理和使用分析视图所需的权限,请让您的管理员为您授予项目的 Observability Analytics User (roles/observability.analyticsUser) IAM 角色。

    此预定义角色包含创建、管理和使用分析视图所需的权限。如需查看所需的确切权限,请展开所需权限部分:

    所需权限

    如需创建、管理和使用分析视图,需要具备以下权限:

    • observability.analyticsViews.get
    • observability.analyticsViews.list
    • observability.analyticsViews.create
    • observability.analyticsViews.update
    • observability.analyticsViews.delete
  • 如需获得查询日志视图和使用 Log Analytics 所需的权限,请让您的管理员为您授予项目的以下 IAM 角色:

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

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

    如需了解查询用户定义的存储分区中的视图或查询 _Default 日志存储分区的 _AllLogs 视图所需的其他角色,请参阅 Cloud Logging 角色

限制

以下限制适用于数据分析视图:

  • 一个分析视图无法查询另一个分析视图。
  • 一个分析视图可以查询多个日志视图。不过,托管查询的日志视图的日志存储分区必须位于同一位置。例如,假设您有两个日志存储分区,一个位于 us-east1,另一个位于 asia-east1。您无法创建用于查询这些日志存储分区中日志视图的分析视图。
  • 分析视图的父级资源必须是 Google Cloud 项目。您无法在文件夹或组织中创建分析视图。
  • 分析视图不支持关联的数据集。因此,您只能使用 Log Analytics 页面查询分析视图。此外,您必须在默认的 Cloud Logging 服务中运行这些查询。
  • 不支持使用 API 创建或管理 Google Analytics 视图。
  • 以下限制适用于数据分析视图:

    • 每个 Google Cloud 项目的分析视图数量上限:100
    • 每个 Google Cloud 项目在每个区域的分析视图数量上限: 50
    • 每个 Google Cloud 项目中可存储 Google Analytics 视图的区域数量上限:10 个

后续步骤