Splunk统计每人总水果数及分地区水果数的正确查询语法是什么?
问题原因
你编写的查询语句错误根源在于两次stats聚合的逻辑顺序错误:第一次按name做stats聚合后,数据集仅保留name、scount_by_name两个字段,原始的location字段会被直接丢弃。第二次stats按name、location分组时既找不到location字段,第二次聚合也会直接丢弃第一次生成的scount_by_name字段,最终才会出现该字段为空的情况。
正确查询语法(Splunk SPL)
<你获取该数据集的基础搜索语句> | stats count as count_by_namelocation by name, location | eventstats sum(count_by_namelocation) as scount_by_name by name | table name location count_by_namelocation scount_by_name
语法说明
- 第一层
stats先按name和location分组统计,得到每个用户在每个区域的水果数量count_by_namelocation,此时每行数据对应一个「用户名+区域」的唯一组合 - 第二层用
eventstats替代stats做聚合:eventstats不会修改原有数据集的行数和已有字段,只会按name分组计算每个用户的总水果数,把scount_by_name作为新字段追加到每一行数据中 - 最后用
table输出你需要的所有字段即可
举个实际的计算样例:用户mary在east区域有1个水果,在north区域有1个水果,查询结果中会生成两行mary的记录,两行的scount_by_name均为2,count_by_namelocation分别为1、1,完全匹配你的需求。
内容的提问来源于stack exchange,提问作者LindaMage
相关产品推荐
相关产品推荐

