適用対象: ✅Microsoft Fabric✅Azure データ エクスプローラー✅Azure Monitor✅Microsoft Sentinel
タイム ピボットの視覚化は、時間軸上のイベントのタイム ライン ピボットに対する対話型ナビゲーションです。
注
- この視覚化は、 render 演算子のコンテキストでのみ使用できます。
- この視覚化は Kusto.Explorer で使用できますが、Azure Data Explorer Web UI では使用できません。
構文
T|
render
timepivot
[with
(
プロパティ名=
プロパティ値 [,
...])
]
構文規則について詳しく知る。
パラメーター
件名 | タイプ | 必須 | 説明 |
---|---|---|---|
T | string |
✔️ | 入力テーブル名。 |
プロパティ名、 プロパティ値 | string |
キーと値のプロパティのペアのコンマ区切りのリスト。 サポートされるプロパティを参照してください。 |
サポートされるプロパティ
すべてのプロパティは省略可能です。
プロパティ名 | プロパティ値 |
---|---|
series |
レコードごとに結合された値によってそのレコードが属する系列が定義される、コンマ区切りの列のリスト。 |
インタラクティブディスプレイ
タイム ピボットをレンダリングした後、スライス レベルを追加したり、特定のタイム スライスにドリルダウンしたりして、データをさらに調査して操作できます。 テーブル内のデータは、設定したスライスオプションに従ってインタラクティブに更新されます。 使用可能なスライス・オプションは次のとおりです。
- 複数のスライス・レベルの変更、追加、および削除
- 行を展開して各レベルの詳細を表示する
- 開始時間または終了時間で表示するように切り替えます
- 特定の行または特定のタイム スライスを選択し、テーブル内のデータを表示します。
注
- タイムピボットには、テレメトリデータを収集および出力するためのクロスプラットフォームのオープンスタンダードであるOpenTelemetryスキーマのサポートが組み込まれています。 OpenTelemetryデータの標準化および構造化された形式により、効率的なデータピボットと分析が容易になります。 スライス オプションの第 1 レベルを操作すると、OpenTelemtry スパンとそのネストされた階層がリストに表示されます。
例示
このセクションの例では、構文を使用して作業を開始する方法を示します。
州ごとのフラッド イベントの視覚化
このクエリは、指定された中西部の状態の洪水イベントを視覚化し、タイム ピボット グラフとして表示します。
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)
出力
さらに、次のように時間ピボットを操作できます。
新しいスライス オプションを選択して、時間ピボットに表示されるデータを変更します。 時間ピボットの下のテーブルのデータが更新され、新しい系列が反映されます。
スライス・オプション・レベルを追加して、データをさらに調査し、操作します。 各行を展開して、追加されたレベルを表示します。
特定のスライスに関連するデータを表示するには、時間ピボットの行で 1 つ以上の時間スライスを選択します。
階層的なOpenTelemetryデータの表示とスライス
OpenTelemetry データ スライス オプションは、そのネストされた階層を反映します。
この例では、タイム ピボットは、データテーブル内の特定の TraceID に従ってレンダリングされます。 この例に示すクエリには、大きなテーブルからの最初の 2 行のデータが含まれています。
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
出力
時間ピボットでは、 スライス オプションは 、ピボットの基準となる列として SpanKind に自動的に設定されます。
同じ OpenTelemetry トレース内の個々のスパンの階層を表示するには、 スライス オプション を (SpanID) に変更します。 階層は、トレース全体を構成するスパンを表示するために拡張できます。 スパンごとに、スパンの種類、スパン名、およびスパン ID がスパン ヘッダーとして表示されます。
1 行目のヘッダーは [SPAN_KIND_CLIENT/POST]: 3275d2b91035ce2e で、階層を示すために展開されています。