Compartir a través de


Time Pivot (Gráfico dinámico de tiempo)

Se aplica a: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

La visualización de pivote de tiempo es una navegación interactiva sobre los eventos de dinamización de línea de tiempo en el eje de tiempo.

Nota:

  • Esta visualización solo se puede usar en el contexto del operador render.
  • Esta visualización se puede usar en Kusto.Explorer, pero no está disponible en la interfaz de usuario web de Azure Data Explorer.

Sintaxis

T|rendertimepivot [with( propertyName=propertyValue [, ...]])

Obtenga más información sobre las convenciones de sintaxis.

Parámetros

Nombre Tipo Obligatorio Descripción
T string ✔️ Nombre de la tabla de entrada.
propertyName, propertyValue string Lista separada por comas de pares de propiedades clave-valor. Consulte las propiedades admitidas.

Propiedades admitidas

Todas las propiedades son opcionales.

PropertyName (Nombre de la propiedad) PropertyValue (Valor de la propiedad)
series Lista delimitada por comas de columnas cuyos valores por registro combinados definen la serie a la que pertenece el registro.

Pantalla interactiva

Después de representar la tabla dinámica de tiempo, puede investigar más a fondo los datos e interactuar con ellos agregando niveles de segmento y explorando en intervalos de tiempo específicos. Los datos de la tabla se actualizan de forma interactiva en función de las opciones de segmento que configure. Las opciones de sector que están disponibles son:

  • Cambiar, agregar y eliminar varios niveles de sector
  • Expanda las filas para ver los detalles de cada nivel
  • Alternar para ver por hora de inicio o por hora de finalización
  • Seleccione filas específicas, o intervalos de tiempo específicos, y vea sus datos en la tabla.

Nota:

  • Los pivotes de tiempo tienen compatibilidad integrada con el esquema OpenTelemetry, un estándar abierto multiplataforma para recopilar y emitir datos de telemetría. El formato estandarizado y estructurado de los datos de OpenTelemetry facilita el pivote y el análisis eficientes de los datos. Al interactuar con el primer nivel de las opciones de segmento, los intervalos de OpenTelemtry y su jerarquía anidada se muestran en la lista.

Ejemplos

Los ejemplos de esta sección muestran cómo usar la sintaxis para ayudarle a empezar.

Visualice los eventos de inundación por estado

Esta consulta genera una visualización de eventos de inundación en los estados de Midwestern especificados, que se muestran como un gráfico dinámico de tiempo.

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)

de salida

Captura de pantalla del pivote de tiempo en Kusto.Explorer.

Puede interactuar aún más con el pivote de tiempo, por ejemplo:

  • Seleccione una nueva opción de segmento para cambiar los datos que se muestran en el pivote de tiempo. Los datos de la tabla debajo de la tabla temporal se actualizan para reflejar la nueva serie.

    Captura de pantalla de las opciones de segmento de pivote de tiempo en Kusto.Explorer.

  • Agregue niveles de opción de división para investigar más a fondo e interactuar con los datos. Expanda cada fila para ver los niveles agregados.

    Captura de pantalla de un pivote de tiempo con varios niveles expandidos en Kusto.Explorer.

  • Para mostrar los datos relevantes para un intervalo específico, seleccione uno o más intervalos de tiempo en una fila del pivote de tiempo.

    Captura de pantalla de un intervalo de tiempo específico en Kusto.Explorer.

Visualización y segmentación de datos jerárquicos de OpenTelemetry

Las opciones de segmento de datos de OpenTelemetry reflejan su jerarquía anidada.

En este ejemplo, una tabla dinámica de tiempo se representa de acuerdo con un TraceID específico en la tabla de datos. La consulta que se muestra en este ejemplo contiene las dos primeras filas de datos de una tabla grande.

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 

de salida

En la tabla dinámica de tiempo, las opciones de División se establecen automáticamente en SpanKind como la columna por la que se va a pivotar.

Captura de pantalla de la tabla dinámica de tiempo representada con un origen de datos de OpenTelemetry.

Puede mostrar la jerarquía de los intervalos individuales en el mismo seguimiento de OpenTelemetry, cambiando las opciones de Slice a (SpanID). La jerarquía se puede expandir para mostrar los intervalos que componen todo el trazado. Para cada intervalo, puede ver el tipo de intervalo, el nombre del intervalo y el ID del intervalo como encabezado del intervalo.

Captura de pantalla de la dinámica de tiempo renderizada con las opciones de segmento de telemetría mostradas.

El encabezado de la primera línea es [SPAN_KIND_CLIENT/POST]: 3275d2b91035ce2e y se expande para mostrar la jerarquía.

Captura de pantalla del pivote temporal con jerarquía ampliada.