azure Kusto如果Array包含数组,则不返回任何结果

bxgwgixi  于 2022-12-04  发布在  其他
关注(0)|答案(1)|浏览(154)

我想写一个kusto查询,如果变量中有三条记录,它基本上不会返回任何结果。下面是一个例子:

let someValues = datatable (name: string)
    [
     "111",
     "222",
     "333",
    ];

// my query

因此,如果someValues变量包含所有三个字符串-“111”、“222”、“333”,那么我的查询应该不会返回任何结果。如果它只包含其中两个字符串“111”、“222”,那么它应该只返回false。如果它包含其中一个字符串“222”,那么它也应该返回false。但如果它包含所有三个字符串“111”,“222”、“333”,则查询不应返回任何结果。
这是我的尝试,但它不工作。

let someValues = datatable (name: string)
[
 "111",
 "222",
 "333",
];
someValues
| summarize make_set(name)
| where set_name contains "111" and set_name contains "222" and set_name contains "333" // this doesn't work because it outputs 1 row

下面是一个等效的C#程序。

static void Main(string[] args)
{
    List<string> s = new List<string>() {"111", "222", "333"};
    if (s.Contains("111") && s.Contains("222") && s.Contains("333"))
        return; // no results
    else
    {
        Console.WriteLine("False"); // prints false
    }
}
fzwojiic

fzwojiic1#

let someValues = datatable (name: string)
[
 "111",
 "222",
 "333"
];
let values = dynamic(["111", "222", "333"]);
someValues
| summarize make_set(name)
| project   diff_is_empty_set = array_length(set_difference(values, set_name)) == 0
| where     not(diff_is_empty_set)

Fiddle

相关问题