微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何改进热图大型数据集的 KQL 查询

如何解决如何改进热图大型数据集的 KQL 查询

我在下面有一个 KQL 查询,它将提供一个非常好的热图,以按国家/地区对 Azure WAF 进行最高访问。

这里的挑战是这个查询不能超过 24 小时,因为我的记录数量太大了。我如何改进它以显示每周和每月的统计数据?

// source: https://datahub.io/core/geoip2-ipv4
set notruncation;
let CountryDB=externaldata(Network:string,geoname_id:string,continent_code:string,continent_name:string,country_iso_code:string,country_name:string)
[@"https://datahub.io/core/geoip2-ipv4/r/geoip2-ipv4.csv"]
| extend Dummy=1;
let AppGWAccess = AzureDiagnostics
| where ResourceType == "APPLICATIONGATEWAYS"
| where Category == "ApplicationGatewayAccessLog"
| where userAgent_s !in ("bot")
| project TimeGenerated,clientIP_s;
AppGWAccess
| extend Dummy=1
| summarize count() by Hour=bin(TimeGenerated,6h),clientIP_s,Dummy
| partition by Hour(
                  lookup (CountryDB|extend Dummy=1) on Dummy
                | where ipv4_is_match(clientIP_s,Network)
                )
| summarize sum(count_) by country_name

解决方法

您正在做的是对所有数据创建每小时聚合。相反,您应该创建一个 Materialized View 来为您在后台进行聚合。

引用文档:

物化视图公开对源表的聚合查询。物化视图总是返回聚合查询的最新结果(总是新鲜的)。查询物化视图比直接在源表上运行聚合(每次查询都执行)性能更高。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。