1

我在 Kusto 有 2 张桌子:

  1. windowScans - 每行都来自这种格式:windowStart:long, windowEnd:long
  2. 文件 - 每一行都来自这种格式:timestamp:long, fileId:string

我想为每个文件加入所有匹配的 windowScan 行:timestamp > windowStart && timestamp < windowEnd。结果应该是所有文件的表,以及每个文件的所有匹配窗口扫描对。一个windowScan 行可能会出现在许多文件中。知道如何执行查询吗?

4

1 回答 1

1

这是一种解决方案:

let windowsScan = datatable(windowStart:long, windowEnd:long)[1,5, 6,8, 10, 14];
let files = datatable(timestamp:long, fileId:string)[3,"a", 4,"b", 4,"c", 6, "a", 11,"a", 13, "b"];
windowsScan
| extend timestamp = range(windowStart, windowEnd, 1)
| mv-expand timestamp to typeof(long)
| join kind=inner (files) on timestamp
| summarize take_any(windowStart, windowEnd) by fileId, timestamp 

结果:

文件标识 时间戳 窗口开始 窗口结束
一种 3 1 5
b 4 1 5
C 4 1 5
一种 6 6 8
一种 11 10 14
b 13 10 14
于 2021-10-27T11:04:31.180 回答