다음을 통해 공유


시간 피벗

적용 대상: ✅Microsoft Fabric

시간 피벗 시각화는 시간 축에서 이벤트 시간 선 피벗을 통해 대화형 탐색입니다.

참고 항목

  • 이 시각화는 렌더링 연산자의 컨텍스트에서만 사용할 수 있습니다.
  • 이 시각화는 Kusto.Explorer에서 사용할 수 있지만 Azure Data Explorer 웹 UI에서는 사용할 수 없습니다.

구문

T|rendertimepivot [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)

출력

Kusto.Explorer의 시간 피벗 스크린샷입니다.

다음과 같이 시간 피벗과 추가로 상호 작용할 수 있습니다.

  • 새 슬라이스 옵션을 선택하여 시간 피벗에 표시되는 데이터를 변경합니다. 시간 피벗 아래 표의 데이터가 업데이트되어 새 계열을 반영합니다.

    Kusto.Explorer의 시간 피벗 조각 옵션 스크린샷입니다.

  • 슬라이스 옵션 수준을 추가하여 데이터를 추가로 조사하고 상호 작용할 수 있습니다. 각 행을 확장하여 추가된 수준을 확인합니다.

    Kusto.Explorer에서 여러 수준이 확장된 시간 피벗의 스크린샷입니다.

  • 특정 조각과 관련된 데이터를 표시하려면 시간 피벗의 행에서 하나 이상의 시간 조각을 선택합니다.

    Kusto.Explorer의 특정 시간 조각 스크린샷입니다.

계층적 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 로 자동 설정됩니다.

OpenTelemetry 데이터 원본으로 렌더링된 시간 피벗의 스크린샷입니다.

슬라이스 옵션을(SpanID)로 변경하여 동일한 OpenTelemetry 추적에서 개별 범위의 계층 구조를 표시할 수 있습니다. 전체 추적을 구성하는 범위를 표시하도록 계층을 확장할 수 있습니다. 각 범위에 대해 범위 종류, 범위 이름 및 범위 ID를 범위 헤더로 볼 수 있습니다.

표시된 원격 분석 슬라이스 옵션으로 렌더링된 시간 피벗의 스크린샷입니다.

첫 번째 줄의 헤더는 [SPAN_KIND_CLIENT/POST]: 3275d2b91035ce2e 이며 계층 구조를 표시하도록 확장됩니다.

확장된 계층 구조가 있는 시간 피벗의 스크린샷.