如何编写KQL查询返回数据库数量超4的客户所有Azure SQL Database?
用KQL筛选数据库数量超4的客户的全部数据库
可以通过Kusto的临时表定义、分组统计和关联查询实现这个需求,以下是修改后的查询:
// 提取符合条件的Azure SQL Database基础数据 let db_data = 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; // 统计每个客户的数据库数量,筛选出数量≥5的客户 let over_limit_customers = db_data | where isnotempty(tags.customerCode) | summarize db_count = count() by customerCode = tags.customerCode | where db_count >= 5; // 关联返回超限客户的所有数据库记录 db_data | join kind=inner over_limit_customers on $left.tags.customerCode == $right.customerCode | project subscriptionName, resourceGroup, name, type, location, tier, requestedServiceObjectiveName, customerCode, db_count
逻辑说明
- 定义基础数据集:用
let关键字将原查询的结果保存为db_data,避免重复执行相同的筛选逻辑。 - 筛选超限客户:从
db_data中按customerCode分组统计数据库数量,只保留数量≥5的客户,得到over_limit_customers列表。 - 关联返回结果:将基础数据集与超限客户列表做内连接,仅保留这些客户的所有数据库记录,同时附带该客户的总数据库数量便于核对。
这个方案完全满足需求:仅返回数据库数量≥5的客户的全部数据库,数量≤4的客户不会出现在结果中。
内容的提问来源于stack exchange,提问作者Francesco Mantovani
相关产品推荐
相关产品推荐

