Sdílet prostřednictvím


buildschema() (agregační funkce)

Platí pro: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

Vytvoří minimální schéma, které připouští všechny hodnoty DynamicExpr.

Poznámka:

Tato funkce se používá ve spojení s operátorem sumarizace.

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ázvem w typu řetězec.
  • Klíčové indexer slovo označuje, že z a t 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 }
}