Поделиться через


buildschema() (функция агрегирования)

Область применения: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

Создает минимальную схему, которая признает все значения DynamicExpr.

Примечание.

Эта функция используется в сочетании с оператором сводки.

Синтаксис

buildschema(DynamicExpr)

Дополнительные сведения о соглашениях синтаксиса.

Параметры

Имя (название) Type Обязательно Описание
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 или строку типа.
  • Свойство, называемое y ii типа double, или другой контейнер со свойством, называемым w строкой типа.
  • Ключевое indexer слово указывает, что z и t являются массивами.
  • Каждый элемент в массиве z имеет тип длинной или строкой типа.
  • t — это массив строк.
  • Каждое свойство является необязательным, и любой массив может быть пустым.

Модель схемы

Синтаксис возвращаемой схемы следующий:

Контейнер ::= '{' Именованный тип* '}'; Именованный тип: := (имя | """"indexer") ":" Type; Тип ::= Primitive-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 }
}