make_bag_if() (агрегатная функция)

dynamic Создает контейнер свойств JSON (словарь) значений expr в записях, для которых предикат имеет значение true.

Значения NULL игнорируются и не учитываются при вычислении.

Примечание

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

Синтаксис

make_bag_if(Expr,предикат [,maxSize])

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

Параметры

Имя Тип Обязательно Описание
expr dynamic ✔️ Выражение, используемое для вычисления агрегирования.
predicate bool ✔️ Предикат, который имеет trueзначение , чтобы к результату добавлялось выражение .
Maxsize int Ограничение на максимальное количество возвращаемых элементов. Значение по умолчанию и максимальное значение — 1048576.

Возвращаемое значение

dynamic Возвращает контейнер свойств JSON (словарь) значений expr в записях, для которых предикат имеет значение true. Значения, не относящиеся к словарю, будут пропущены. Если ключ отображается в нескольких строках, выбирается произвольное значение из возможных значений этого ключа.

Примечание

Эта функция без предиката аналогична make_bagфункции .

Пример

В следующем примере показан упакованный контейнер свойств JSON.

let T = datatable(prop:string, value:string, predicate:bool)
[
    "prop01", "val_a", true,
    "prop02", "val_b", false,
    "prop03", "val_c", true
];
T
| extend p = bag_pack(prop, value)
| summarize dict=make_bag_if(p, predicate)

Выходные данные

dict
{ "prop01": "val_a", "prop03": "val_c" }

Используйте подключаемый модуль bag_unpack() для преобразования ключей контейнера в выходных данных make_bag_if() в столбцы.

let T = datatable(prop:string, value:string, predicate:bool)
[
    "prop01", "val_a", true,
    "prop02", "val_b", false,
    "prop03", "val_c", true
];
T
| extend p = bag_pack(prop, value)
| summarize bag=make_bag_if(p, predicate)
| evaluate bag_unpack(bag)

Выходные данные

prop01 prop03
val_a val_c