buildschema() (fungsi agregasi)

Membangun skema minimal yang mengakui semua nilai DynamicExpr.

Catatan

Fungsi ini digunakan bersama dengan ringkasan operator.

Sintaks

buildschema(DynamicExpr)

Pelajari selengkapnya tentang konvensi sintaksis.

Parameter

Nama Jenis Diperlukan Deskripsi
DynamicExpr dynamic ✔️ Ekspresi yang digunakan untuk perhitungan agregasi.

Mengembalikan

Menampilkan skema minimal yang menerima semua nilai DynamicExpr.

Tip

Jika input adalah string JSON, gunakan fungsi parse_json() untuk mengonversi JSON menjadi nilai dinamis . Jika tidak, kesalahan dapat terjadi.

Contoh

Contoh berikut membangun skema berdasarkan:

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

Hasil

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

Skema yang dihasilkan memberi tahu kita bahwa:

  • Objek akar adalah kontainer dengan empat properti bernama x, y, z, dan t.
  • Properti yang disebut x berjenis panjang atau dari jenis string.
  • Properti yang disebut y ii dari jenis ganda, atau kontainer lain dengan properti yang disebut wstring jenis.
  • Kata indexer kunci menunjukkan bahwa z dan t merupakan array.
  • Setiap item dalam array z berjenis panjang atau dari jenis string.
  • t adalah array string.
  • Setiap properti bersifat opsional secara implisit, dan larik apa pun mungkin kosong.

Model skema

Sintaks skema yang ditampilkan adalah:

Kontainer ::= '{' Named-type* '}'; Jenis-bernama: := (nama | '""indexer') ':' Jenis; Jenis ::= Jenis primitif | Jenis union | Wadah; Union-type ::= '[' Type* ']'; Jenis primitif ::= "long" | "string" | ...;

Nilai setara dengan subset anotasi jenis TypeScript, dikodekan sebagai nilai dinamis Kusto. Dalam TypeScript, contoh skemanya adalah:

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