Kusto 中是否有内置方法来检查某个值是否不包含多个项目?我知道我可以使用 has_any 来检查某个项目是否包含集合中的任何值,但我似乎无法让它与“!”一起使用。操作员。
例子:
let Employees = datatable(Id:int, Name:string, Position:string )
[
1, "Bob", "General Manager",
2, "Mary", "Coordinator",
3, "John", "Sales Representitive"
];
Employees
| where Position !has_any("Manager", "Sales")
预期输出:
如果我删除 not 运算符 (!),它就会起作用,并返回 Bob 和 John 的信息。但我想将它从有任何/包含任何事情反转not包含任何。我也尝试过
| where Position has_any !("Manager", "Sales")
但似乎是 has_any 和“!”的任意组合抛出语法错误并且不会运行。有没有办法在不列出单个 !contains 语句的情况下做到这一点?即这不是我正在寻找的:
| where Position !contains "Manager" and Position !contains "Sales"
对于只有两个条件的情况来说,这并不是什么大问题,但是当您处理很长的列表时,最好使用 has_any 并在其前面加上一个简单的感叹号。
-- UPDATE --
我最近才发现has_any
如果字段包含集合中的任何项目,实际上不会选取。从技术上来说是正确的,只有当字段有任何全词匹配从集合中。为了澄清这一点,这里有一个例子:
let TestTable = datatable(Id:int, FirstName:string, LastName:string )
[
1, "John", "De La Cruz",
2, "Susana", "Vanderbelt",
3, "Stan", "Manlyman",
4, "Henry", "Van De Camps",
5, "Alissa", "New man"
];
TestTable
| where not(LastName has_any("de", "man"))
仔细记下结果:
如果你在哪里用这个替换最后一行
| where LastName !contains("de") and LastName !contains("man")
它不会在结果集中产生任何结果。所以如果你真的想要“领域不存在的地方contain集合中的任何值”,那么据我所知,您必须单独写出每个值,没有这样的关键字,您可以在其中传递该功能的集合。如果有人知道这样的关键字,请在评论或新答案,我将更新这个问题。