Buildschema()(聚合函数)
生成允许 DynamicExpr 所有值的最小架构。
注意
此函数与 summarize 运算符结合使用。
语法
buildschema
(
DynamicExpr)
详细了解语法约定。
参数
客户 | 类型 | 必需 | 说明 |
---|---|---|---|
DynamicExpr | dynamic |
✔️ | 用于聚合计算的表达式。 |
返回
返回允许“DynamicExpr”所有值的最小架构。
提示
如果输入是 JSON 字符串,请使用 parse_json() 函数将 JSON 转换为动态值。 否则,可能会出错。
示例
以下示例基于以下内容生成架构:
{"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)
结果
schema_value |
---|
{"x":["long","string"],"y":["double",{"w":"string"}],"z":{"indexer ":["long","string"]},"t":{"indexer ":"string"}} |
生成的架构表示:
- 根对象是具有四个属性(名为 x、y、z 和 t)的容器。
- 名为
x
的属性的类型为 long 或 string。 - 名为
y
ii 的属性属于 double 类型,或者另一个容器名为w
的属性属于 string 类型。 indexer
关键字指示z
和t
是数组。- 数组
z
中的每一项均为“long”类型或“string”类型。 t
是一个字符串数组。- 每个属性均为隐式可选,并且任何数组均可能为空。
架构模型
返回架构的语法是:
Container ::= '{' Named-type* '}'; Named-type: := (name | '"indexer
"') ':' Type; Type ::= Primitive-type | Union-type | Container; Union-type ::= '[' Type* ']'; Primitive-type ::= "long" | "string" | ...;
这些值等效于 TypeScript 类型批注的子集,作为 Kusto 动态值编码。 在 Typescript 中,示例架构应为:
var someobject:
{
x?: (number | string),
y?: (number | { w?: string}),
z?: { [n:number] : (long | string)},
t?: { [n:number]: string }
}