快点!has_any |其中值不包含集合中的任何值
Kusto !has_any | where value does not contain any value in set
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 运算符 (!),它会起作用,returns Bob 和 John 的信息。但我想将它从 has any/contains any 反转为 does not contain any。我也试过
| where Position has_any !("Manager", "Sales")
但它似乎是 has_any 和 "!" 的任意组合抛出语法错误,不会 运行。有没有办法在不列出单个 !contains 语句的情况下执行此操作?也就是说,这不是我要找的:
| where Position !contains "Manager" and Position !contains "Sales"
这对于两个条件来说没什么大不了的,但是当你处理一个长列表时,最好使用 has_any 并在它前面加上一个简单的感叹号。
- 更新 -
我最近才发现 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")
它不会在结果集中产生任何结果。所以如果你真的想要“where field doesn't contain any value in the set”那么据我所知你必须单独写出每一个,没有这样的关键字,您可以在其中传递该功能的集合。如果有人知道这样的关键字,请在评论或新答案中告诉我,我会更新这个问题。
你可以使用 not()
: https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/notfunction
例如:
let Employees = datatable(Id:int, Name:string, Position:string )
[
1, "Bob", "General Manager",
2, "Mary", "Coordinator",
3, "John", "Sales Representitive"
];
Employees
| where not(Position has_any("Manager", "Sales"))
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 运算符 (!),它会起作用,returns Bob 和 John 的信息。但我想将它从 has any/contains any 反转为 does not contain any。我也试过
| where Position has_any !("Manager", "Sales")
但它似乎是 has_any 和 "!" 的任意组合抛出语法错误,不会 运行。有没有办法在不列出单个 !contains 语句的情况下执行此操作?也就是说,这不是我要找的:
| where Position !contains "Manager" and Position !contains "Sales"
这对于两个条件来说没什么大不了的,但是当你处理一个长列表时,最好使用 has_any 并在它前面加上一个简单的感叹号。
- 更新 -
我最近才发现 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")
它不会在结果集中产生任何结果。所以如果你真的想要“where field doesn't contain any value in the set”那么据我所知你必须单独写出每一个,没有这样的关键字,您可以在其中传递该功能的集合。如果有人知道这样的关键字,请在评论或新答案中告诉我,我会更新这个问题。
你可以使用 not()
: https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/notfunction
例如:
let Employees = datatable(Id:int, Name:string, Position:string )
[
1, "Bob", "General Manager",
2, "Mary", "Coordinator",
3, "John", "Sales Representitive"
];
Employees
| where not(Position has_any("Manager", "Sales"))