Share via


buildschema() (Aggregationsfunktion)

Erstellt das minimale Schema, das alle Werte von DynamicExpr zulässt.

Hinweis

Diese Funktion wird in Verbindung mit dem summarize-Operator verwendet.

Syntax

buildschema(DynamicExpr)

Erfahren Sie mehr über Syntaxkonventionen.

Parameter

Name Typ Erforderlich BESCHREIBUNG
DynamicExpr dynamic ✔️ Ausdruck, der für die Aggregationsberechnung verwendet wird.

Gibt zurück

Gibt das minimale Schema zurück, das alle Werte von DynamicExpr zulässt.

Tipp

Wenn es sich bei der Eingabe um eine JSON-Zeichenfolge handelt, verwenden Sie die funktion parse_json(), um den JSON-Code in einen dynamischen Wert zu konvertieren. Andernfalls tritt möglicherweise ein Fehler auf.

Beispiel

Im folgenden Beispiel wird ein Schema basierend auf erstellt:

  • {"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)

Ergebnisse

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

Das resultierende Schema teilt uns Folgendes mit:

  • Das Stammobjekt ist ein Container mit vier Eigenschaften namens x, y, z und t.
  • Die Eigenschaft namens x ist vom Typ long oder vom Typ string.
  • Die Eigenschaft ii y vom Typ double oder ein anderer Container mit einer Eigenschaft vom w Typ string.
  • Die indexer Schlüsselwort (keyword) gibt an, dass z und t Arrays sind.
  • Jedes Element im Array z ist vom Typ long oder vom Typ string.
  • t ist ein Array von Zeichenfolgen.
  • Jede Eigenschaft ist implizit optional, und jedes Array kann leer sein.

Schemamodell

Die Syntax des zurückgegebenen Schemas lautet folgendermaßen:

Container ::= '{' Named-type* '}'; Named-type: := (Name | '"indexer"') ':' Type; Typ ::= Primitive-Type | Union-Typ | Container; Union-type ::= '[' Type* ']'; Primitiver Typ ::= "long" | "string" | ...;

Die Werte entsprechen einer Teilmenge von TypeScript-Typanmerkungen, die als dynamischer Kusto-Wert codiert sind. In TypeScript wäre das Beispielschema wie folgt:

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