簡體   English   中英

Kusto 相當於 SQL 不在

[英]Kusto equivalent of SQL NOT IN

我試圖確定表 1 中存在哪些記錄不在表 2 中(所以基本上使用 NOT IN)

let outliers =
Table 2
| project UniqueEventGuid;
Table 1
|where UniqueEventGuid !in  (outliers)
|project UniqueEventGuid

但是即使我知道表 1 中有孤兒,也得到了 0 條記錄。 !in不是正確的語法嗎?

提前致謝!

!in 運算符

“在表格表達式中,結果集的第一列被選中。”

在下面的示例中,我有意對列進行排序,以便查詢由於數據類型不匹配而導致錯誤。

在您的情況下,數據類型可能匹配,因此查詢有效,但結果錯誤。

let t1 = datatable(i:int, x:string)[1,"A", 2,"B", 3,"C" ,4,"D" ,5,"E"];
let t2 = datatable(y:string, i:int)["d",4 ,"e",5 ,"f",6 ,"g",7];
t1
| where i !in (t2)

Relop 語義錯誤:SEM0025:提供給“,in”運算符的值之一與左側表達式類型“int”不匹配,請考慮使用顯式強制轉換

小提琴

如果確實如此,您可以重新排序列或僅投影相關的列。
注意使用雙括號。

let t1 = datatable(i:int, x:string)[1,"A", 2,"B", 3,"C" ,4,"D" ,5,"E"];
let t2 = datatable(y:string, i:int)["d",4 ,"e",5 ,"f",6 ,"g",7];
t1
| where i !in ((t2 | project i))
一世 X
1 一個
2
3 C

小提琴

另一種選擇是使用leftanti join

let t1 = datatable(i:int, x:string)[1,"A", 2,"B", 3,"C" ,4,"D" ,5,"E"];
let t2 = datatable(y:string, i:int)["d",4 ,"e",5 ,"f",6 ,"g",7];
t1
| join kind=leftanti t2 on i
一世 X
2
3 C
1 一個

小提琴

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM