azure - Kusto 查询对标签名称(键)而不是值进行不区分大小写的过滤

标签 azure filter kql azure-resource-graph

在我们的 Azure 环境中,我们的资源包含的标签在大小写的使用方面尚未统一命名。假设我们有一个标签 Projectteam。在我们的环境中,我们将拥有该标签名称的各种变体:

  • 项目团队
  • 项目团队
  • 项目团队
  • ProJeCteAm

你明白了,大小写拼写的使用可能无处不在。

我想要的是一个 Kusto (KQL) 查询,它以不区分大小写的方式过滤该 Projectteam 标记。我发现了很多以不区分大小写的方式过滤标签的的示例,但在这里我想对标签名称本身执行此操作。如果我使用这个查询:

Resources
| where tags.Projectteam == 'TeamX'

它只会返回其标签名称与 Projectteam 完全匹配的资源。我不会获得任何使用不同大小写拼写的资源,例如 projectTeam

我当然可以对 tags 属性值应用一些过滤器,例如使用不区分大小写的 contains 运算符:

Resources
| where tags contains 'projectteam'

但这也可能会返回不需要的结果,其中 projectteam 用作值而不是标记名称(键)。我也感觉应该有更好的方法。

有人知道以不区分大小写的方式过滤标签名称的更好方法吗?

最佳答案

Resources
| where tags has "ProjectTeam" and tags has "TeamX"
| where tags[tostring(bag_keys(tags)[array_index_of(parse_json(toupper(tostring(bag_keys(tags)))), toupper("ProjectTeam"))])] == "TeamX"

ADX 演示:

let Resources = datatable(ID:long, tags:dynamic)
[
    1 ,dynamic({"dummy1": 1, "dummy2": 2, "Projectteam": "TeamX"})
   ,2 ,dynamic({"ProjectTeam": "TeamX"})
   ,3 ,dynamic({"projectTeam": "TeamX"})
   ,4 ,dynamic({"ProJeCtteAm": "TeamX"})
   ,5 ,dynamic({"ProjectTeam": "TeamY"})
   ,6 ,dynamic({"OtherTeam": "TeamX"})   
   ,7 ,dynamic({"OtherTeam": "TeamX", "ProjectTeam": "TeamY"})
];
Resources
| where tags has "ProjectTeam" and tags has "TeamX"
| where tags[tostring(bag_keys(tags)[array_index_of(parse_json(toupper(tostring(bag_keys(tags)))), toupper("ProjectTeam"))])] == "TeamX"
<表类=“s-表”> <标题> ID 标签 <正文> 1 {"dummy1":1,"dummy2":2,"Projectteam":"TeamX"} 2 {“ProjectTeam”:“TeamX”} 3 {“projectTeam”:“TeamX”} 4 {"ProJeCtteAm":"TeamX"}

Fiddle

关于azure - Kusto 查询对标签名称(键)而不是值进行不区分大小写的过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75543673/

相关文章:

Azure Devops 多阶段管道环境名称未正确设置

c - pcap 过滤器表达式

javascript - 根据过滤器/类似部分字符串从数组中提取数组

reactjs - 为什么我不能使用过滤器删除我的待办事项?

azure - 将 KQL 数组拆分为多列

azure - 在 Kusto 中传递多个值

Azure 数据资源管理器 - 限制表和记录

sql-server - 将 Active Directory 管理员添加到 Azure SQL 服务器是否会影响管理员帐户

azure - 从命令提示符部署到 Azure

azure - Nginx 入口 Controller - 无法使用主机名访问 AKS Azure 负载均衡器