Udostępnij za pośrednictwem


buildschema() (funkcja agregacji)

Tworzy minimalny schemat, który przyznaje wszystkie wartości dynamicExpr.

Uwaga

Ta funkcja jest używana w połączeniu z operatorem podsumowania.

Składnia

buildschema(DynamicExpr)

Dowiedz się więcej o konwencjach składniowych.

Parametry

Nazwa Typ Wymagane Opis
DynamicExpr dynamic ✔️ Wyrażenie używane do obliczania agregacji.

Zwraca

Zwraca minimalny schemat, który przyznaje wszystkie wartości elementu DynamicExpr.

Porada

Jeśli dane wejściowe są ciągiem JSON, użyj funkcji parse_json(), aby przekonwertować kod JSON na wartość dynamiczną . W przeciwnym razie może wystąpić błąd.

Przykład

Poniższy przykład tworzy schemat na podstawie:

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

Wyniki

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

Wynikowy schemat informuje nas, że:

  • Obiekt główny jest kontenerem z czterema właściwościami o nazwach x, y, z i t.
  • Wywoływana właściwość x ma typ longlub ciąg typu.
  • Właściwość o nazwie y ii typu double lub inny kontener z właściwością o nazwie wciąg typu.
  • Słowo indexer kluczowe wskazuje, że z tablice i t są.
  • Każdy element w tablicy z jest typu long lub typu ciąg.
  • t jest tablicą ciągów.
  • Każda właściwość jest niejawnie opcjonalna, a każda tablica może być pusta.

Model schematu

Składnia zwracanego schematu to:

Kontener ::= "{" nazwany typ* '}'; Nazwany typ: := (nazwa | '"indexer"') ':' Type; Typ ::= Typ pierwotny | Typ unii | Kontenera; Typ unii ::= '[' Type* ']'; Typ pierwotny ::= "long" | "ciąg" | ...;

Wartości są równoważne podzestawowi adnotacji typu TypeScript zakodowanych jako wartość dynamiczna Kusto. W języku TypeScript przykładowy schemat będzie:

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