考虑以下两个 Splunk 搜索:
index=a | join type=inner MyKey [search index=b]
和:
index=a | join type=inner MyKey [search index=b | where MyVal > 0]
值得注意的是,后者的搜索 - 其子搜索具有约束的搜索 - 的结果行数是前者的三倍。
该命令的Splunk 文档页面join
建议语义足够接近 SQL 的参数join
:
如果指定的字段对每个搜索和子搜索的结果是共同的,则连接用于组合搜索和子搜索的结果。您还可以使用 selfjoin 命令将表连接到自身。
此片段与type=inner
论点相关:
如果指定的字段对每个搜索和子搜索的结果是共同的,则连接用于组合搜索和子搜索的结果。您还可以使用 selfjoin 命令将表连接到自身。
基于此信息,我假设上面的两个 Splunk 搜索应该分别等效于以下 SQL:
SELECT *
FROM a
INNER JOIN b ON a.MyKey = b.MyKey
和:
SELECT *
FROM a
INNER JOIN b ON a.MyKey = b.MyKey
WHERE b.MyVal > 0
添加约束如何增加结果行数?
有趣的是,下面的 Splunk 搜索产生了第三个结果 - 与我将相同数据放入 SQL 数据库时得到的结果相匹配:
index=a | join type=outer MyKey [search index=b | eval hasmatch=1]
| where hasmatch=1
还有一些注意事项:
- 该
MyVal
字段在任何一个表/索引中都没有重复项 - 我已验证 Splunk 索引中的原始事件与事件计数和值中的原始源数据相匹配
MyVal
- 为相关源类型配置的唯一搜索时间操作
props.conf
是report
根据 in 中的节提取字段transforms.conf
(源数据采用 CSV 方言)
谁能在这里给我一些线索?就我而言,这种行为是荒谬的。