1

考虑以下两个 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.confreport根据 in 中的节提取字段transforms.conf(源数据采用 CSV 方言)

谁能在这里给我一些线索?就我而言,这种行为是荒谬的。

4

1 回答 1

0

我建议您在 Splunk 官方论坛 (splunk-base.splunk.com) 上重新发布此问题。那里有一些非常有用和经验丰富的“Splunkers”(员工、客户、合作伙伴等),它可能是您提问的更好地方。

干杯,

米宾

于 2012-10-16T09:47:51.697 回答