시간 피벗 시각화는 시간 축에서 이벤트 시간 선 피벗을 통해 대화형 탐색입니다.
참고 항목
- 이 시각화는 렌더링 연산자의 컨텍스트에서만 사용할 수 있습니다.
- 이 시각화는 Kusto.Explorer에서 사용할 수 있지만 Azure Data Explorer 웹 UI에서는 사용할 수 없습니다.
구문
T|
render
timepivot
[with
(
propertyName=
propertyValue [,
...]])
구문 규칙에 대해 자세히 알아봅니다.
매개 변수
이름 | 유형 | 필수 | 설명 |
---|---|---|---|
T | string |
✔️ | 입력 테이블 이름입니다. |
propertyName, propertyValue | string |
키-값 속성 쌍의 쉼표로 구분된 목록입니다. 지원되는 속성을 참조하세요. |
지원되는 속성
모든 속성은 선택 사항입니다.
PropertyName | 부동산 가치 |
---|---|
series |
레코드가 속한 계열을 정의하는 결합된 레코드당 값이 있는 열의 쉼표로 구분된 목록입니다. |
인터랙티브 디스플레이
시간 피벗을 렌더링한 후 조각 수준을 추가하고 특정 시간 조각을 드릴하여 데이터를 추가로 조사하고 상호 작용할 수 있습니다. 테이블의 데이터는 사용자가 구성한 슬라이스 옵션에 따라 대화형으로 업데이트됩니다. 사용 가능한 슬라이스 옵션은 다음과 같습니다.
- 여러 슬라이스 수준 변경, 추가 및 제거
- 행을 확장하여 각 레벨의 세부 정보 보기
- 시작 시간 또는 종료 시간별로 볼 수 있도록 전환
- 특정 행 또는 특정 시간 조각을 선택하고 테이블에서 해당 데이터를 봅니다.
참고 항목
- 시간 피벗은 텔레메트리 데이터를 수집하고 내놓기 위한 크로스 플랫폼, 개방형 표준인 OpenTelemetry 스키마에 대한 기본 제공 지원을 제공합니다. OpenTelemetry 데이터의 표준화되고 구조화된 형식은 효율적인 데이터 피봇팅 및 분석을 용이하게 합니다. 슬라이스 옵션의 첫 번째 수준과 상호 작용할 때 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)
출력
다음과 같이 시간 피벗과 추가로 상호 작용할 수 있습니다.
새 슬라이스 옵션을 선택하여 시간 피벗에 표시되는 데이터를 변경합니다. 시간 피벗 아래 표의 데이터가 업데이트되어 새 계열을 반영합니다.
슬라이스 옵션 수준을 추가하여 데이터를 추가로 조사하고 상호 작용할 수 있습니다. 각 행을 확장하여 추가된 수준을 확인합니다.
특정 조각과 관련된 데이터를 표시하려면 시간 피벗의 행에서 하나 이상의 시간 조각을 선택합니다.
계층적 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
출력
시간 피벗에서 슬라이스 옵션은 피벗할 열로 SpanKind 로 자동 설정됩니다.
슬라이스 옵션을(SpanID)로 변경하여 동일한 OpenTelemetry 추적에서 개별 범위의 계층 구조를 표시할 수 있습니다. 전체 추적을 구성하는 범위를 표시하도록 계층을 확장할 수 있습니다. 각 범위에 대해 범위 종류, 범위 이름 및 범위 ID를 범위 헤더로 볼 수 있습니다.
첫 번째 줄의 헤더는 [SPAN_KIND_CLIENT/POST]: 3275d2b91035ce2e 이며 계층 구조를 표시하도록 확장됩니다.