bag_unpack 在 Kusto 中的表现如何?
What is the performance of bag_unpack in Kusto?
关于 bag_unpack
在 Kusto 中的性能和使用的一些问题:
- 在列上的大型数据集上使用
bag_unpack
的性能如何
其中所有顶级属性 相同 (因此每一行都有一个
具有相同 属性 名称的动态包,因此每个结果列来自
解包后的包会有价值)?
- 在列上的大型数据集上使用
bag_unpack
的性能如何
其中顶级属性 不完全相同 ,因此不保证
具有相同的顶级属性(因此会有一些行
解压缩的列有 empty/no 值)?
- bag_unpack是否使用任何被认为速度慢的方法
性能像
extract_json()
或 parse_json()
,还是比那些方法快得多?
给定以下两个示例,对于大型数据集,哪个优化得更好或执行得更快? (或者它们会差不多吗?):
//#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遍数据-
用于构建输出模式(通过分析所有查询记录的动态负载中存在哪些属性)。
- 这与
buildschema
aggregation function 的操作方式类似。
正在使用 now-known 输出架构执行查询。
(*) 除了性能之外,这还具有输出模式始终稳定的优势,这可能是某些自动化场景所需要的 - 即使源数据发生变化,并且动态负载中添加了新属性(或删除了旧属性),不会影响输出架构。
关于 bag_unpack
在 Kusto 中的性能和使用的一些问题:
- 在列上的大型数据集上使用
bag_unpack
的性能如何 其中所有顶级属性 相同 (因此每一行都有一个 具有相同 属性 名称的动态包,因此每个结果列来自 解包后的包会有价值)? - 在列上的大型数据集上使用
bag_unpack
的性能如何 其中顶级属性 不完全相同 ,因此不保证 具有相同的顶级属性(因此会有一些行 解压缩的列有 empty/no 值)? - bag_unpack是否使用任何被认为速度慢的方法
性能像
extract_json()
或parse_json()
,还是比那些方法快得多?
给定以下两个示例,对于大型数据集,哪个优化得更好或执行得更快? (或者它们会差不多吗?):
//#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遍数据-
用于构建输出模式(通过分析所有查询记录的动态负载中存在哪些属性)。
- 这与
buildschema
aggregation function 的操作方式类似。
- 这与
正在使用 now-known 输出架构执行查询。
(*) 除了性能之外,这还具有输出模式始终稳定的优势,这可能是某些自动化场景所需要的 - 即使源数据发生变化,并且动态负载中添加了新属性(或删除了旧属性),不会影响输出架构。