2012-10-15 189 views
1

考慮以下兩個Splunk的搜索:添加約束至Splunk的搜索產生多個結果行

index=a | join type=inner MyKey [search index=b] 

和:

index=a | join type=inner MyKey [search index=b | where MyVal > 0] 

值得注意的是,搜索的是後者 - 搜索其subsearch有一個約束 - 具有結果行的前三倍。

Splunk documentation pagejoin命令表明,對於參數的緣故,以SQL的join足夠接近的語義:

聯接用來組合的搜索結果,並subsearch如果指定的字段是共同的每。您也可以使用selfJoin命令將表加入自己。

這個片段是相關的type=inner說法:

聯接用來組合的搜索結果,並subsearch如果指定的字段是共同的每一個。您也可以使用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配置爲相關sourcetypes唯一的搜索時操作噸數和值是一個report以提取在transforms.conf基於一個節中的字段(源數據是在一個CSV方言)

任何人都可以在這裏給我一些線索嗎?就我而言,這種行爲是無意義的。

回答

0

我建議您在官方Splunk論壇(splunk-base.splunk.com)上重新發布此問題。在那裏有一些非常有用和經驗豐富的「Splunkers」(員工,客戶,合作伙伴等),這對您的問題可能是一個更好的地方。

乾杯,

MHibbin

+0

我已經發布的問題有太多: http://splunk-base.splunk.com/answers/61942/adding-a-constraint-to-a- subsearch-yield-more-result-rows 不幸的是到目前爲止還沒有迴應。 – Cera