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
— это массив строк.- Каждое свойство является необязательным, и любой массив может быть пустым.
Модель схемы
Синтаксис возвращаемой схемы следующий:
Контейнер ::= '{' Именованный тип* '}'; Именованный тип: := (имя | ""indexer
"") ":" Тип; Тип ::= Primitive-type | Тип объединения | Контейнер; 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 }
}
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по