Compartir vía


buildschema() (función de agregación)

Compila el esquema mínimo que admite todos los valores de DynamicExpr.

Nota:

Esta función se usa junto con el operador summarize.

Sintaxis

buildschema(DynamicExpr)

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

Parámetros

Nombre Type Obligatorio Descripción
DynamicExpr dynamic ✔️ Expresión usada para el cálculo de agregaciones.

Devoluciones

Devuelve el esquema mínimo que admite todos los valores de DynamicExpr.

Sugerencia

Si la entrada es una cadena JSON, use la función parse_json() para convertir el JSON en un valor dinámico . De lo contrario, puede producirse un error.

Ejemplo

En el ejemplo siguiente se compila un esquema basado en:

  • {"x":1, "y":3.5}
  • {"x":"somevalue", "z":[1, 2, 3]}
  • {"y":{"w":"zzz"}, "t":["aa", "bb"], "z":["foo"]}
datatable(value: dynamic) [
    dynamic({"x":1, "y":3.5}),
    dynamic({"x":"somevalue", "z":[1, 2, 3]}),
    dynamic({"y":{"w":"zzz"}, "t":["aa", "bb"], "z":["foo"]})
]
| summarize buildschema(value)

Resultados

schema_value
{"x":["long","string"],"y":["double",{"w":"string"}],"z":{"indexer":["long","string"]},"t":{"indexer:"string"}}

El esquema resultante nos indica que:

  • El objeto raíz es un contenedor con cuatro propiedades denominadas x, y, z y t.
  • La propiedad denominada x es de tipo long o de tipo string.
  • La propiedad denominada y ii de tipo double u otro contenedor con una propiedad denominada w cadena de tipo.
  • La indexer palabra clave indica que z y t son matrices.
  • Cada elemento de la matriz z es de tipo long o de tipo string.
  • t es una matriz de cadenas.
  • Cada propiedad es implícitamente opcional, y cualquier matriz puede estar vacía.

Modelo de esquema

La sintaxis del esquema devuelto es:

Contenedor ::= '{' Named-type* '}'; Tipo con nombre: := (nombre | '""indexer') ':' Type; Tipo ::= Tipo primitivo | Tipo de unión | Contenedor; Tipo de unión ::= '[' Type* ']'; Tipo primitivo ::= "long" | "string" | ...;

Los valores son equivalentes a un subconjunto de anotaciones de tipo TypeScript, codificadas como un valor dinámico de Kusto. En TypeScript, el esquema de ejemplo sería:

var someobject:
{
    x?: (number | string),
    y?: (number | { w?: string}),
    z?: { [n:number] : (long | string)},
    t?: { [n:number]: string }
}