Azure Analytics Kusto查询:如何按页面事件与地区分组统计?
按地区拆分统计页面事件的Kusto查询调整
嘿,我来帮你把现有查询改成支持按client_CountryOrRegion分组统计的版本,分两种常见场景给你参考:
场景1:按「地区 + 活动类型」维度统计
这个版本会保留你原来的活动维度(Dim1,也就是事件/页面名称),同时新增地区维度,展示每个地区下各活动的用户、会话和实例数据:
let start = startofday(ago(28d)); let events = union customEvents, pageViews | where timestamp >= start | where name in ('*') or '*' in ('*') or ('%' in ('*') and itemType == 'pageView') or ('#' in ('*') and itemType == 'customEvent') | extend Dim1 = tostring(name); let overall = events | summarize Users = dcount(user_Id); let allUsers = toscalar(overall); events | summarize Users = dcount(user_Id), Sessions = dcount(session_Id), Instances = count() by Dim1, client_CountryOrRegion // 新增地区作为分组维度 | extend DisplayDim = strcat(' ', Dim1), Region = client_CountryOrRegion // 定义地区显示字段 | order by Users desc | project ['Region'] = Region, ['Activities'] = DisplayDim, Values = Dim1, ['Active Users'] = Users, ['Unique Sessions'] = Sessions, ['Total Instances'] = Instances
关键修改点:
- 在
summarize的by子句中添加了client_CountryOrRegion,让统计数据按「活动名称+地区」分组 - 在
extend和project中新增了地区相关字段,确保结果里能清晰看到地区信息
场景2:仅按「地区」维度汇总所有页面事件
如果只需要按地区统计所有页面事件的整体数据(不需要区分具体活动),可以简化成下面的查询:
let start = startofday(ago(28d)); let pageEvents = pageViews // 直接筛选页面事件,不需要union自定义事件 | where timestamp >= start; let overallUsers = pageEvents | summarize dcount(user_Id); let allUsers = toscalar(overallUsers); pageEvents | summarize Users = dcount(user_Id), Sessions = dcount(session_Id), PageViews = count() by client_CountryOrRegion | order by Users desc | project ['Region'] = client_CountryOrRegion, ['Active Users'] = Users, ['Unique Sessions'] = Sessions, ['Total Page Views'] = PageViews
关键调整:
- 直接使用
pageViews表(贴合你要统计页面事件的需求),不需要合并customEvents - 分组维度仅保留
client_CountryOrRegion,汇总该地区下所有页面事件的核心指标 - 把原来的
Instances改成更贴合页面场景的PageViews,语义更清晰
你可以根据实际需求选择其中一种版本,如果需要调整筛选条件(比如只统计特定地区或特定页面),直接在where子句里添加对应规则就好啦~
内容的提问来源于stack exchange,提问作者Codrina Valo
相关产品推荐
相关产品推荐

