共用方式為


buildschema() (聚合函數)

適用於:✅Microsoft網狀架構Azure 數據✅總管 Azure 監視器✅Microsoft Sentinel

建置可接受 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 或類型 字串
  • 類型為 double 的ii屬性y,或是另一個容器,其屬性稱為 w string 類型
  • 關鍵詞 indexer 表示 zt 是陣列。
  • 陣列 z 中的每個專案都是 long 類型或類型 字串
  • t 是字串陣列。
  • 每個屬性都是隱含選擇性的,而且任何數位可能都是空的。

架構模型

傳回架構的語法為:

容器 ::= '{' Named-type* '}';具名類型: := (name |'“”indexer') ':' 類型;類型 ::= Primitive-type |Union-type |容器;Union-type ::= '[' Type* ']';基本類型 ::= “long” |“string” |...;

這些值相當於 TypeScript 類型註釋的子集,編碼為 Kusto 動態值。 在 TypeScript 中,範例架構會是:

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