buildschema() (agregační funkce)
Platí pro: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Vytvoří minimální schéma, které připouští všechny hodnoty DynamicExpr.
Syntaxe
buildschema
(
DynamicExpr)
Přečtěte si další informace o konvencích syntaxe.
Parametry
Název | Type | Požadováno | Popis |
---|---|---|---|
DynamicExpr | dynamic |
✔️ | Výraz použitý pro výpočet agregace. |
Návraty
Vrátí minimální schéma, které uznává všechny hodnoty DynamicExpr.
Tip
Pokud je vstup řetězcem JSON, pomocí funkce parse_json() převeďte JSON na dynamickou hodnotu. V opačném případě může dojít k chybě.
Příklad
Následující příklad sestaví schéma na základě:
{"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)
Výsledky
schema_value |
---|
{"x":["long","string"],"y":["double",{"w":"string"}],"z":{"indexer :["long","string"]},"t":{"indexer :"string"}} |
Výsledné schéma nám říká, že:
- Kořenový objekt je kontejner se čtyřmi vlastnostmi s názvem x, y, z a t.
- Volána
x
vlastnost je typu dlouhý nebo typ řetězec. - Vlastnost s názvem
y
ii typu double nebo jiný kontejner s vlastností s názvemw
typu řetězec. - Klíčové
indexer
slovo označuje, žez
at
jsou pole. - Každá položka v poli
z
je typu dlouhý nebo typový řetězec. t
je pole řetězců.- Každá vlastnost je implicitně volitelná a jakékoli pole může být prázdné.
Model schématu
Syntaxe vráceného schématu je:
Kontejner ::= '{' Pojmenovaný typ* '}'; Pojmenovaný typ: := (název | '""indexer
') ':' Type; Typ ::= Primitivní typ | Typ sjednocení | Kontejner; Union-type ::= '[' Type* ']'; Primitivní typ ::= "long" | "string" | ...;
Hodnoty jsou ekvivalentní podmnožině poznámek typu TypeScript kódované jako dynamická hodnota Kusto. V TypeScriptu by ukázkové schéma bylo:
var someobject:
{
x?: (number | string),
y?: (number | { w?: string}),
z?: { [n:number] : (long | string)},
t?: { [n:number]: string }
}