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