Share via


buildschema() (sammansättningsfunktion)

Skapar det minimala schemat som tillåter alla värden för DynamicExpr.

Anteckning

Den här funktionen används tillsammans med summarize-operatorn.

Syntax

buildschema(DynamicExpr)

Läs mer om syntaxkonventioner.

Parametrar

Namn Typ Obligatorisk Beskrivning
DynamicExpr dynamic ✔️ Uttryck som används för aggregeringsberäkningen.

Returer

Returnerar det minimala schemat som tar emot alla värden för DynamicExpr.

Tips

Om indata är en JSON-sträng använder du funktionen parse_json() för att konvertera JSON till ett dynamiskt värde. Annars kan ett fel uppstå.

Exempel

I följande exempel skapas ett schema baserat på:

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

Resultat

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

Det resulterande schemat visar att:

  • Rotobjektet är en container med fyra egenskaper med namnen x, y, z och t.
  • Egenskapen som kallas x är av typen long eller av typen string.
  • Egenskapen som kallas y ii av typen double, eller en annan container med en egenskap som heter w av typen string.
  • Nyckelordet indexer anger att z och t är matriser.
  • Varje objekt i matrisen z är av typen long eller av typen string.
  • t är en matris med strängar.
  • Varje egenskap är implicit valfri och alla matriser kan vara tomma.

Schemamodell

Syntaxen för det returnerade schemat är:

Container ::= '{' Named-type* '}'; Namngiven typ: := (namn | '"indexer"') ':' Type; Skriv ::= Primitive-type | Union-type | Behållare; Union-type ::= '[' Type* ']'; Primitiv typ ::= "long" | "string" | ...;

Värdena motsvarar en delmängd av TypeScript-typanteckningar, kodade som ett dynamiskt Kusto-värde. I TypeScript skulle exempelschemat vara:

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