在 Splunk 中设置 table 字段的差异
Set difference of a table field in Splunk
通过搜索我组成了一个 table,我们称它为 T1,由两列组成 table name, sourcetype
现在我需要创建一个静态代码生成 table,将其命名为 T2,其中包含上述 table 的所有预期值T1,硬编码。
第一个问题:我怎么能?
第二题:
结果,我需要生成一个 table T3 等于:T2 - T1
,基本上是第一个字段的逻辑集差异,它回答了业务问题“我想知道基于T2的T1中缺少哪些记录
我是 Splunk 及其查询语言的新手,我尝试使用 set diff
和 eval
来创建静态数据,但我没能创建我想要的逻辑全部.
你能指出这个任务的正确逻辑实现吗?
我可以流利地使用 SQL 和 Python 编写脚本,是否有任何概念可以重用以更加熟悉这种查询语言?
愚蠢的图形示例:
T1
姓名
来源类型
service_1
接受
T2
名字
来源类型
service_1
接受
service_2
接受
T3
姓名
来源类型
service_2
接受
对于问题 2,您可以使用 stats 命令并搜索只有一个计数的字段(因此不常见)。这就像一个分组依据。
|stats count by name sourcetype
你搜索count=1后有差值
|search count=1
这为事件制作了一些测试数据:
| makeresults count=6
| streamstats count
| eval name="service_".tostring(count)
| eval sourcetype="acpt"
| fields - count _time
name
sourcetype
service_1
acpt
service_2
acpt
service_3
acpt
service_4
acpt
service_5
acpt
service_6
acpt
这会列出要排除的事件:
| makeresults count=2
| streamstats count
| eval name="service_".tostring(count+2)
| eval sourcetype="acpt"
| fields - count _time
name
sourcetype
service_3
acpt
service_4
acpt
这会打印出第一组中不在第二组中的所有项目:
| makeresults count=6
| streamstats count
| eval name="service_".tostring(count)
| eval sourcetype="acpt"
| fields - count _time
| search NOT [
| makeresults count=2
| streamstats count
| eval name="service_".tostring(count+2)
| eval sourcetype="acpt"
| fields - count _time
]
name
sourcetype
service_1
acpt
service_2
acpt
service_5
acpt
service_6
acpt
通过搜索我组成了一个 table,我们称它为 T1,由两列组成 table name, sourcetype
现在我需要创建一个静态代码生成 table,将其命名为 T2,其中包含上述 table 的所有预期值T1,硬编码。 第一个问题:我怎么能?
第二题:
结果,我需要生成一个 table T3 等于:T2 - T1
,基本上是第一个字段的逻辑集差异,它回答了业务问题“我想知道基于T2的T1中缺少哪些记录
我是 Splunk 及其查询语言的新手,我尝试使用 set diff
和 eval
来创建静态数据,但我没能创建我想要的逻辑全部.
你能指出这个任务的正确逻辑实现吗?
我可以流利地使用 SQL 和 Python 编写脚本,是否有任何概念可以重用以更加熟悉这种查询语言?
愚蠢的图形示例:
T1
姓名 | 来源类型 |
---|---|
service_1 | 接受 |
T2
名字 | 来源类型 |
---|---|
service_1 | 接受 |
service_2 | 接受 |
T3
姓名 | 来源类型 |
---|---|
service_2 | 接受 |
对于问题 2,您可以使用 stats 命令并搜索只有一个计数的字段(因此不常见)。这就像一个分组依据。
|stats count by name sourcetype
你搜索count=1后有差值
|search count=1
这为事件制作了一些测试数据:
| makeresults count=6
| streamstats count
| eval name="service_".tostring(count)
| eval sourcetype="acpt"
| fields - count _time
name | sourcetype |
---|---|
service_1 | acpt |
service_2 | acpt |
service_3 | acpt |
service_4 | acpt |
service_5 | acpt |
service_6 | acpt |
这会列出要排除的事件:
| makeresults count=2
| streamstats count
| eval name="service_".tostring(count+2)
| eval sourcetype="acpt"
| fields - count _time
name | sourcetype |
---|---|
service_3 | acpt |
service_4 | acpt |
这会打印出第一组中不在第二组中的所有项目:
| makeresults count=6
| streamstats count
| eval name="service_".tostring(count)
| eval sourcetype="acpt"
| fields - count _time
| search NOT [
| makeresults count=2
| streamstats count
| eval name="service_".tostring(count+2)
| eval sourcetype="acpt"
| fields - count _time
]
name | sourcetype |
---|---|
service_1 | acpt |
service_2 | acpt |
service_5 | acpt |
service_6 | acpt |