splunk - Splunk:过滤表数据
问题描述
我有以下查找:
C1 | C2| C3| C4
===|===|===|====
A | 1 | x | test
===|===|===|====
A | 2 | y | test
===|===|===|====
B | 1 | x | test
===|===|===|====
B | 1 | y | test
===|===|===|====
B | 1 | z | test
我希望将其转换为:
C1 | C2| C3| C4
===|===|===|====
B | 1 | x | test
===|===|===|====
B | 1 | y | test
===|===|===|====
B | 1 | z | test
所以想法是,如果对于C1的唯一值,如果C2中有多个值,则应该过滤掉C1 + C2的这种组合。
我尝试的是:
| inputlookup LUT.csv
| fillnull value="NULL"
| stats list(*) as * dc("C2") as count by "C1"
| where count=1
但这会导致:
C1 | C2 | C3 | C4
===|=======|=======|==============
B | 1,1,1 | x,y,z | test,test,test
我不想要逗号分隔值。我想要不同的行。
解决方案
这是一个随处运行的示例。它使用streamstats
和stats
来计算 C1/C2 对的变化数量。然后用单个 C1/C2 对过滤掉任何东西。最后,mvexpand
将多值 C3 字段分成不同的事件。
| makeresults | eval _raw="C1 C2 C3 C4
A 1 x test
A 2 y test
B 1 x test
B 1 y test
B 1 z test" | multikv
`comment("Everything above is just test data")`
| streamstats reset_on_change=true count by C1,C2
| stats values(*) as * max(count) as max by C1
| where max > 1
| mvexpand C3
| table C1 C2 C3
推荐阅读
- php - PHP / tmp 文件在请求中间消失 - 有时
- asp.net-identity - 有没有比通过 userManager.CreateAsync() 更快地批量创建身份用户(1M 行)的方法?
- exception - vue axios Uncaught (in promise) 取消
- c# - 带有 2 个参数的 ASP.NET 2.0 Web API 问题
- reactjs - Detox:条件测试用例编写
- c# - 将 NLog.Extended 从 2.0 升级到 4.6 后抛出“无法加载类型 NLog.Web.NLogHttpModule”
- python - 在python中交换十六进制字节数组中的字节对
- c++ - 如何在 C++ 中将 JWK 公钥转换为 PEM 格式
- r - R中的最大阶乘数
- windows - 从 CMD 返回特定字段