kusto 如何写子查询
kusto how to write subquery
问题:
对于 table 中的每一行(来自分析 table),我正在尝试 运行 子查询以在第二个 table 中找到相应的行(来自外部数据)。我想我想要一个子查询,但也许有更好的选择。没有链接每个 table 的列,所以我不能使用连接,唯一的关系是来自分析 table 的数字可能在外部数据 table 中的开始和结束数字之间。
let IDlist = datatable(value:long)
[
45,
76,
150,
202,
2156,
3004,
5001,
];
// imported from externaldata
let idlookup = datatable(start:long, end:long, name:string)
[
1,100,"bob",
101,105,"susan",
200,1000,"henry",
5000,5004,"clair",
];
//using between doesnt work
idlookup
| where idlist between (start .. end)
| project idlist, name
expected output
45 - bob
76 - bob
150 - no match
202 - henry
2156 - no match
3004 - no match
5001 - clair
上面的查询在 between 语句不是标量表达式之前不能用作表达式。我希望子查询可以解决这个问题,但我无法弄清楚语法。
非常感谢任何帮助。
这是一种方法:
let IDlist = datatable(value:long)
[
45,
76,
150,
202,
2156,
3004,
5001,
];
// imported from externaldata
let idlookup = datatable(start:long, end:long, name:string)
[
1, 100, "bob",
101, 105, "susan",
200, 1000, "henry",
5000, 5004, "clair",
];
IDlist
| extend dummy = 1
| lookup (idlookup | extend dummy = 1) on dummy
| where value >=start and value <= end
| join kind=rightouter (IDlist) on value
| extend name = iff(isempty( name), "no match", name)
| project name, value = value1
问题: 对于 table 中的每一行(来自分析 table),我正在尝试 运行 子查询以在第二个 table 中找到相应的行(来自外部数据)。我想我想要一个子查询,但也许有更好的选择。没有链接每个 table 的列,所以我不能使用连接,唯一的关系是来自分析 table 的数字可能在外部数据 table 中的开始和结束数字之间。
let IDlist = datatable(value:long)
[
45,
76,
150,
202,
2156,
3004,
5001,
];
// imported from externaldata
let idlookup = datatable(start:long, end:long, name:string)
[
1,100,"bob",
101,105,"susan",
200,1000,"henry",
5000,5004,"clair",
];
//using between doesnt work
idlookup
| where idlist between (start .. end)
| project idlist, name
expected output
45 - bob
76 - bob
150 - no match
202 - henry
2156 - no match
3004 - no match
5001 - clair
上面的查询在 between 语句不是标量表达式之前不能用作表达式。我希望子查询可以解决这个问题,但我无法弄清楚语法。 非常感谢任何帮助。
这是一种方法:
let IDlist = datatable(value:long)
[
45,
76,
150,
202,
2156,
3004,
5001,
];
// imported from externaldata
let idlookup = datatable(start:long, end:long, name:string)
[
1, 100, "bob",
101, 105, "susan",
200, 1000, "henry",
5000, 5004, "clair",
];
IDlist
| extend dummy = 1
| lookup (idlookup | extend dummy = 1) on dummy
| where value >=start and value <= end
| join kind=rightouter (IDlist) on value
| extend name = iff(isempty( name), "no match", name)
| project name, value = value1