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

Kusto Join查询:如何按$left.column1 < $right.column2条件关联两张表

Kusto 区间匹配关联查询方案

基础实现(推荐)

直接使用Kusto支持的非等值左外连接即可满足需求,语法简洁且性能更优:

files
| join kind=leftouter windowScans on $left.timestamp > $right.windowStart and $left.timestamp < $right.windowEnd

逻辑说明

  • 用kind=leftouter指定左外连接,保证所有files表的记录都会被保留,如果某条file没有匹配到任何windowScan行,对应windowStart、windowEnd字段会返回null
  • 匹配条件中用$left指代左表(files)、$right指代右表(windowScans),严格符合timestamp落在窗口区间内的匹配规则
  • 天然支持同一个windowScan行匹配多个file,无需额外配置

大数据量优化版本

如果两张表数据规模较大,可以提前过滤无效的file记录减少join计算量:

// 先预计算所有窗口的时间边界
let minWindowTime = toscalar(windowScans | summarize min(windowStart));
let maxWindowTime = toscalar(windowScans | summarize max(windowEnd));

files
// 先过滤掉完全不在所有窗口时间范围内的file,减少参与join的数据量
| where timestamp between (minWindowTime .. maxWindowTime)
| join kind=leftouter windowScans on $left.timestamp > $right.windowStart and $left.timestamp < $right.windowEnd

旧版本Kusto兼容写法

如果当前环境不支持非等值join,可以用dummy字段实现等值join后再过滤:

files
| extend dummy = 1
| join kind=leftouter (windowScans | extend dummy = 1) on dummy
| where (timestamp > windowStart and timestamp < windowEnd) or isempty(windowStart)
| project-away dummy, dummy1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:18:02