You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kusto如何避免额外project步骤与重复函数调用生成关联计算列

解决方案

你可以选择以下两种符合要求的实现方式,两种方案都没有实际的性能损耗:

方案1:使用extend + project组合(推荐)

Kusto中extend算子用于新增计算列,搭配一次project输出目标列即可,这种写法可读性最高,且split只会执行一次:

datatable(col:string)
["one,two,three"]
| extend arr = split(col, ',')
| project c1 = arr[0], c2 = arr[1], c3 = arr[2]

你不需要担心两个算子带来的额外开销,Kusto的查询优化器会自动将这两个算子的逻辑合并执行,不会产生冗余计算。

方案2:直接重复调用split函数

Kusto编译器内置了公共子表达式消除优化,只要是相同入参的同一个函数调用,哪怕写多次,实际执行时只会计算一次,不会产生你担心的性能损耗:

datatable(col:string)
["one,two,three"]
| project c1=split(col,',')[0] , c2=split(col,',')[1], c3=split(col,',')[2]

这种写法只有一个project算子,符合你减少步骤的要求,性能和多步骤写法完全一致。

注:Kusto语法本身不支持在同一个算子内引用当前算子刚定义的计算列,所以无法在单个project内先定义数组再引用数组生成多列,以上两种是当前最优的实现方案。

内容的提问来源于stack exchange,提问作者Dhiraj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 16:48:04