make_bag_if()(聚合函数)

创建 predicate 评估结果为 true 的记录中 expr 值的 dynamic JSON 属性包(字典)。

空值会被忽略,不会纳入计算中。

注意

此函数与 summarize 运算符结合使用。

语法

make_bag_if(expr,predicate [,maxSize])

详细了解语法约定

参数

客户 类型​​ 必需 说明
expr dynamic 用于聚合计算的表达式。
predicate bool 评估结果为 true 的 predicate,用于将“expr”添加到结果中。
maxSize int 返回元素最大数目的限制。 默认值和最大值为 1048576。

返回

返回 predicate 评估结果为 true 的记录中 expr 值的 dynamic JSON 属性包(字典)。 将跳过非字典值。 如果一个键出现在多个行中,则会从此键的可能值中选择一个任意值。

注意

这一不带谓词的函数类似于 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