你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
时间透视可视化效果是在时间轴上对事件时间线透视的交互式导航。
注意
- 此可视化效果只能在 render 运算符的上下文中使用。
- 此可视化效果可在 Kusto.Explorer 中使用,但在 Azure 数据资源管理器 Web UI 中不可用。
语法
T |
render
timepivot
[with
(
propertyName =
propertyValue [,
...])
]
详细了解语法约定。
参数
客户 | 类型 | 必需 | 说明 |
---|---|---|---|
T | string |
✔️ | 输入表名称。 |
propertyName、propertyValue | string |
键值属性对的逗号分隔列表。 请参阅支持的属性。 |
支持的属性
所有属性都是可选的。
PropertyName | PropertyValue |
---|---|
series |
以逗号分隔的列列表,其中的每记录值组合定义了记录所属的系列。 |
交互式显示
呈现时间透视后,您可以通过添加切片级别和钻取特定时间切片来进一步调查数据并与之交互。 表中的数据将根据您配置的切片选项以交互方式更新。 可用的切片选项包括:
- 更改、添加和删除多个切片级别
- 展开行可查看每个级别的详细信息
- 切换为按开始时间或结束时间查看
- 选择特定行或特定时间片,并在表中查看其数据。
注意
- 时间透视器内置了对 OpenTelemetry 架构的支持,OpenTelemetry 架构是用于收集和发出遥测数据的跨平台开放标准。 OpenTelemetry 数据的标准化和结构化格式有助于高效的数据透视和分析。 当与切片选项的第一级交互时,OpenTelemtry span 及其嵌套层次结构会显示在列表中。
例子
本节中的示例演示如何使用语法来帮助您入门。
可视化每个州的洪水事件
此查询输出指定中西部状态的洪水事件的可视化效果,显示为时间透视图。
let midwesternStates = dynamic([
"ILLINOIS", "INDIANA", "IOWA", "KANSAS", "MICHIGAN", "MINNESOTA",
"MISSOURI", "NEBRASKA", "NORTH DAKOTA", "OHIO", "SOUTH DAKOTA", "WISCONSIN"
]);
StormEvents
| where EventType == "Flood" and State in (midwesternStates)
| render timepivot with (series=State)
输出
您可以进一步与时间轴交互,例如:
选择新的切片选项以更改时间透视中显示的数据。 时间透视下方表中的数据将更新以反映新序列。
添加切片选项级别以进一步调查数据并与之交互。 展开每一行以查看添加的级别。
要显示与特定切片相关的数据,请在时间透视的行中选择一个或多个时间切片。
查看和切片分层 OpenTelemetry 数据
OpenTelemetry 数据切片选项反映其嵌套层次结构。
在此示例中,根据数据表中的特定 TraceID 呈现时间透视。 此示例中显示的查询包含大型表中的前两行数据。
datatable(TraceID:string, SpanID:string, ParentID:string, SpanName:string, SpanStatus:string, SpanKind:string, StartTime:datetime, EndTime:datetime, ResourceAttributes:dynamic, TraceAttributes:dynamic, Events:dynamic, Links:dynamic)
[
"c339bbae48eb8426f9a63c4eee55284c", "d1265cecd4c291ee", "", "POST", "STATUS_CODE_UNSET", "SPAN_KIND_CLIENT", datetime(2025-04-07T04:15:52.1657810Z), datetime(2025-04-07T04:16:01.6616919Z), dynamic({"k8s.namespace.name":"otel-demo","k8s.pod.start_time":"2025-04-06T00:19:47.0000000Z","k8s.deployment.name":"opentelemetry-demo-loadgenerator","k8s.node.name":"aks-userpool-31567306-vmss000003","service.name":"loadgenerator","service.version":"1.12.0","k8s.pod.uid":"d2fbaf5d-b5c2-4dac-af08-b92d56573899","k8s.pod.name":"opentelemetry-demo-loadgenerator-6994f5db8-lq4qs","service.instance.id":"d2fbaf5d-b5c2-4dac-af08-b92d56573899","service.namespace":"opentelemetry-demo","k8s.pod.ip":"10.244.0.57","telemetry.sdk.language":"python","telemetry.sdk.version":"1.25.0","telemetry.sdk.name":"opentelemetry"}), dynamic({"http.status_code":200,"http.url":"http://opentelemetry-demo-frontendproxy:8080/api/checkout","http.method":"POST","scope.name":"opentelemetry.instrumentation.requests","scope.version":"0.46b0"}), dynamic([]), dynamic([]),
"c339bbae48eb8426f9a63c4eee55284c", "651aa53d2f583eca", "d488b4a32f60794f", "POST /api/checkout", "STATUS_CODE_UNSET", "SPAN_KIND_SERVER", datetime(2025-04-07T04:15:52.1680000Z), datetime(2025-04-07T04:16:01.4667420Z), dynamic({"k8s.namespace.name":"otel-demo","k8s.pod.start_time":"2025-04-06T00:19:47.0000000Z","k8s.deployment.name":"opentelemetry-demo-frontend","k8s.node.name":"aks-userpool-31567306-vmss000003","service.name":"frontend","service.version":"1.12.0","k8s.pod.uid":"b61b8875-b9ec-4144-b866-df88b8c6c67c","k8s.pod.name":"opentelemetry-demo-frontend-59bccd8fdb-j9xxf","service.instance.id":"b61b8875-b9ec-4144-b866-df88b8c6c67c","service.namespace":"opentelemetry-demo","k8s.pod.ip":"10.244.0.45","process.command_args":["/usr/local/bin/node","--require","./Instrumentation.js","/app/server.js"],"os.type":"linux","telemetry.sdk.language":"nodejs","telemetry.sdk.version":"1.25.1","process.pid":16,"telemetry.sdk.name":"opentelemetry","process.runtime.name":"nodejs","process.runtime.description":"Node.js","process.runtime.version":"20.18.0","host.name":"opentelemetry-demo-frontend-59bccd8fdb-j9xxf","host.arch":"amd64","process.executable.path":"/usr/local/bin/node","container.id":"d1763eedd13fa94f9581d9099ab481e112a8fdf95b6da831b9f01a4b8490fe60","os.version":"5.15.176.3-3.cm2","process.owner":"nextjs","process.command":"/app/server.js","process.executable.name":"node"}), dynamic({"http.status_code":200,"http.method":"POST","scope.name":"next.js","scope.version":"0.0.1","http.target":"/api/checkout","next.span_type":"BaseServer.handleRequest","next.span_name":"POST /api/checkout","next.rsc":false}), dynamic([]), dynamic([]),
...
]
| where TraceID == '081a007d3b7deaf32ca43a554c5058bd'
| render timepivot
输出
在时间透视中, Slice (切片) 选项 会自动设置为 SpanKind 作为要透视的列。
您可以通过将 Slice (切片) 选项更改为 (SpanID) 来显示同一 OpenTelemetry 跟踪中各个范围的层次结构。 层次结构是可展开的,以显示构成整个跟踪的 span。 对于每个 span,您可以看到 span 类型、span 名称和 span ID 作为 span 标头。
第一行中的标题是 [SPAN_KIND_CLIENT/POST]: 3275d2b91035ce2e ,并展开以显示层次结构。