两个 Splunk 搜索结果之间的差异
Delta between two Splunk search results
我正在尝试找出两次搜索之间的增量。
index="xyz-index" userId | rename attributes.privateGroups as privateGroups
| join type=inner userId [ search index="xyz-index" userId | rename attributes.publicGroups as publicGroups]
| table userId, privateGroups, publicGroups
- 我想找出 privateGroups 和 publicGroups 中的 userIds
- 我只想在 privateGroups 中找出 userIds 而不是在 publicGroups 中,反之亦然
对于上面提到的我厌倦了内部查询但是当我改变搜索顺序时我得到了两个不同的搜索结果。
第二个查询也请帮帮我好吗?下面是3个事件,101 user id分两组而102只有一组
{
userId : 101
levle : INFO
timestamp : 2020-06-10
attributes: {
privateGroups : JohnOrg
}
}
{
userId : 101
levle : INFO
timestamp : 2020-05-09
attributes: {
publicGroups : DistrictOrg
}
}
{
userId : 102
levle : INFO
timestamp : 2020-05-09
attributes: {
publicGroups : DistrictOrg
}
}
你可以在没有 join
的情况下这样做:
index="xyz-index" userId=*
| rename attributes.privateGroups as privateGroups attributes.publicGroups as publicGroups
确保 privateGroups
和 publicGroups
字段存在于所有事件中
| fillnull value="-" privateGroups publicGroups
因为我们知道其中带有“-”的字段填充了 fillnull
:
| eval both=if(privateGroups!="-" AND publicGroups!="-",1,0)
| eval inPrivate=if(privateGroups!="-",1,0)
| eval inPublic=if(publicGroups!="-",1,0)
确保每个 "type" 只有一个事件 (public-vs-private-vs-both) with userId
:
| stats count by userId both inPrivate inPublic
最后,报告两者中的 userIds,仅 public 和私有:
| stats sum(both) as both_count sum(inPrivate) as private_count sum(inPublic) as public_count by userId
我正在尝试找出两次搜索之间的增量。
index="xyz-index" userId | rename attributes.privateGroups as privateGroups
| join type=inner userId [ search index="xyz-index" userId | rename attributes.publicGroups as publicGroups]
| table userId, privateGroups, publicGroups
- 我想找出 privateGroups 和 publicGroups 中的 userIds
- 我只想在 privateGroups 中找出 userIds 而不是在 publicGroups 中,反之亦然
对于上面提到的我厌倦了内部查询但是当我改变搜索顺序时我得到了两个不同的搜索结果。
第二个查询也请帮帮我好吗?下面是3个事件,101 user id分两组而102只有一组
{
userId : 101
levle : INFO
timestamp : 2020-06-10
attributes: {
privateGroups : JohnOrg
}
}
{
userId : 101
levle : INFO
timestamp : 2020-05-09
attributes: {
publicGroups : DistrictOrg
}
}
{
userId : 102
levle : INFO
timestamp : 2020-05-09
attributes: {
publicGroups : DistrictOrg
}
}
你可以在没有 join
的情况下这样做:
index="xyz-index" userId=*
| rename attributes.privateGroups as privateGroups attributes.publicGroups as publicGroups
确保 privateGroups
和 publicGroups
字段存在于所有事件中
| fillnull value="-" privateGroups publicGroups
因为我们知道其中带有“-”的字段填充了 fillnull
:
| eval both=if(privateGroups!="-" AND publicGroups!="-",1,0)
| eval inPrivate=if(privateGroups!="-",1,0)
| eval inPublic=if(publicGroups!="-",1,0)
确保每个 "type" 只有一个事件 (public-vs-private-vs-both) with userId
:
| stats count by userId both inPrivate inPublic
最后,报告两者中的 userIds,仅 public 和私有:
| stats sum(both) as both_count sum(inPrivate) as private_count sum(inPublic) as public_count by userId