bag_unpack 在 Kusto 中的表现如何?

What is the performance of bag_unpack in Kusto?

关于 bag_unpack 在 Kusto 中的性能和使用的一些问题:

给定以下两个示例,对于大型数据集,哪个优化得更好或执行得更快? (或者它们会差不多吗?):

//#1
datatable(d:dynamic)
[
    dynamic({"Name": "John", "Age":20}),
    dynamic({"Name": "Dave", "Age":40}),
    dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d)
//#2
datatable(d:dynamic)
[
    dynamic({"Name": "John", "Age":20}),
    dynamic({"Name": "Dave", "Age":40}),
    dynamic({"Name": "Jasmine", "Age":30}),
]
| project Age = d.Age, Name = d.Name

第二个选项总是首选。

当您事先知道要投影的属性集时,显式仅投影那些而不使用 bag_unpack() 插件会更高效。 (*)

后者需要2遍数据-

  1. 用于构建输出模式(通过分析所有查询记录的动态负载中存在哪些属性)。

  2. 正在使用 now-known 输出架构执行查询。


(*) 除了性能之外,这还具有输出模式始终稳定的优势,这可能是某些自动化场景所需要的 - 即使源数据发生变化,并且动态负载中添加了新属性(或删除了旧属性),不会影响输出架构。