本文档介绍了 BigQuery 数据集的一些属性, 在接收器将跟踪记录从 Cloud Trace 导出到 BigQuery 时创建。
架构
存储跟踪记录数据的表的架构由 span 的 Trace V2 API 定义决定。
当新的 span 包含无法存储在现有表中的字段时,Trace 会跟踪您的表列并修补表。如果到达的 span 包含以前未见过的条目,则需要执行修补操作。例如,如果到达的 span 包含新的属性,则对表进行修补。
数据保留
您可以配置 BigQuery 表格的数据保留政策。如需了解如何管理表和表数据,请参阅使用表。
表类型
如果您配置接收器来将跟踪记录导出到 BigQuery,则 Trace 会配置提取时间分区表。如需详细了解分区表(包括如何创建、管理、查询和删除这些表),请参阅使用分区表。
查询示例
在以下查询中,DATASET 是 BigQuery 数据集的名称,MY_TABLE 是该数据集中表的名称。
如需显示表中 2019 年 11 月 20 日对应的所有列,但将结果限制为 10 行,请运行查询:
SELECT * FROM `DATASET.MY_TABLE` WHERE DATE(_PARTITIONTIME) = "2019-11-20" LIMIT 10
如需显示表中的所有可用分区,请运行查询:
SELECT _PARTITIONTIME as pt FROM `DATASET.MY_TABLE` GROUP BY 1
HipsterShop 查询
HipsterShop 是 GitHub 上提供的演示应用。
以下示例查询说明了如何使用 BigQuery 查询来收集使用 Trace 界面不易获取的信息。
内部查询会查找与指定正则表达式匹配的所有 span 接收日期为 2019 年 12 月 2 日 外部查询会选择以显示以下内容:
- 名称
- 匹配的 span 数量
- 不同跟踪记录 ID 的数量
- 第 50、90 和 99 个分位数
- HTTP 路径
- 错误消息
并显示按跟踪记录计数排序的结果:
SELECT t0.span.displayName.value, count(t0.span.spanId) as spanCount, count(distinct traceId) as traceCount, APPROX_QUANTILES(milliseconds, 100)[OFFSET(50)] as p50, APPROX_QUANTILES(milliseconds, 100)[OFFSET(95)] as p95, APPROX_QUANTILES(milliseconds, 100)[OFFSET(99)] as p99, t0.span.attributes.attributeMap._http_path, t0.span.attributes.attributeMap._error_message FROM ( SELECT *, REGEXP_EXTRACT(span.name, r"./traces/([a-f0-9]+).") as traceId, TIMESTAMP_DIFF(span.endTime,span.startTime, MILLISECOND) as milliseconds FROM `hipstershop-demo.Hipstershop_trace_export.cloud_trace` WHERE DATE(_PARTITIONTIME) = "2019-12-02") AS t0 WHERE t0.span.parentSpanId is NULL GROUP by t0.span.displayName.value, t0.span.attributes.attributeMap._http_path,t0.span.attributes.attributeMap._error_message ORDER BY traceCount DESC LIMIT 1000
对于此应用的一个特定安装,查询结果如下所示:
查看跟踪记录数据
如需使用 BigQuery 接口中, 选择包含导出的跟踪记录的表。