繁体   English   中英

KQL:: 只返回超过 4 条记录的标签

[英]KQL :: return only tags with more than 4 records

我创建了一个 Kusto 查询,允许我返回我们所有的数据库公园。 查询只需要10行代码:

Resources
| join kind=inner (
    resourcecontainers
    | where type == 'microsoft.resources/subscriptions'
    | project subscriptionId, subscriptionName = name)
    on subscriptionId
| where subscriptionName in~ ('Subscription1','Subscription2')
| where type =~ 'microsoft.sql/servers/databases'
| where name != 'master'
| project  subscriptionName, resourceGroup, name, type, location,sku.tier, properties.requestedServiceObjectiveName, tags.customerCode

根据合同,我们应该只为每个客户提供 4 个 Azure SQL 数据库,但有时开发人员会复制一份并将其重命名为_old_backup ,突然一个客户可以拥有 5 或 6 个数据库。

这增加了云的总体成本,我想列出拥有 4 个以上数据库的所有客户。

为此,我可以使用标签tags.customerCode ,它具有每个客户的 3 个字母标识符。

代码应该像这样工作:如果一个客户被称为 ABC 并且有 4 个 Azure SQL 带有tags.customerCode ABC 的数据库,查询应该不返回任何内容。 如果有 5 或 6 个数据库带有tags.customerCode ABC,则查询应返回所有这些数据库。

不确定 Kusto 是否可以那么灵活。

这是一个可能的解决方案。
需要注意的是,Azure 资源图只支持有限的 KQL 子集。

resourcecontainers 
| where     type == 'microsoft.resources/subscriptions'
        //and name in~ ('Subscription1','Subscription2')
| project subscriptionId, subscriptionName = name
| join kind=inner  
  (
    resources
    | where     type =~ 'microsoft.sql/servers/databases'
            and name != 'master'
  )
  on  subscriptionId            
| project   subscriptionId, subscriptionName, resourceGroup, name, type, location
           ,tier                            = sku.tier
           ,requestedServiceObjectiveName   = properties.requestedServiceObjectiveName
           ,customerCode                    = tostring(tags.customerCode)    
| summarize dbs = count(), details = make_list(pack_all()) by customerCode
| where dbs > 4
| mv-expand with_itemindex=db_seq ['details']
| project   customerCode
           ,dbs
           ,db_seq = db_seq + 1
           ,subscriptionId                  = details.subscriptionId
           ,subscriptionName                = details.subscriptionName
           ,resourceGroup                   = details.resourceGroup
           ,name                            = details.name
           ,type                            = details.type
           ,location                        = details.location
           ,tier                            = details.tier
           ,requestedServiceObjectiveName   = details.requestedServiceObjectiveName

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM