在 splunk 中嵌套 if 循环
nested if loop in splunk
我想在 splunk 中编写一个嵌套的 if 循环:
我想达到的目标
if buyer_from_France:
do eval percentage_fruits
if percentage_fruits> 10:
do summation
if summation>20:
total_price
if total_price>:
do(trigger bonus coupon)
我当前的代码(有效):
> | eventstats sum(buyers_fruits) AS total_buyers_fruits by location
> | stats sum(fruits) as buyers_fruits by location buyers
> | eval percentage_fruits=fruits_bought/fruits_sold
> | table fruits_bought fruits_sold buyers
> | where percentage_fruits > 10
> | sort - percentage_fruits
如何完成第 2 个(求和)、第 3 个(总价)、第 4 个 if 循环(触发)的 syntax/expression?
SPL 不做“循环”。一个接近[足够]的模拟是 SPL 中的每一行与 bash 中的单个命令 相似 (因此命令之间的管道分隔符)。 IOW,SPL 在处理中是纯线性的。像这样使用多条件 eval..if
:
index=ndx sourcetype=srctp
| eval myfield=if(match(fieldA,"someval") AND !match(fieldC,"notthis"),"all true","else val")
或者像这样:
| eval myfield=if(match(fieldA,"someval"),if(match(fieldB,"otherval"),"matched A&B",if(!match(fieldC,"notthis"),"not A & not C","else val")))
如果你能更好地解释你的使用case/end目标,我们可能会提供更好的指导
我想在 splunk 中编写一个嵌套的 if 循环: 我想达到的目标
if buyer_from_France: do eval percentage_fruits if percentage_fruits> 10: do summation if summation>20: total_price if total_price>: do(trigger bonus coupon)
我当前的代码(有效):
> | eventstats sum(buyers_fruits) AS total_buyers_fruits by location
> | stats sum(fruits) as buyers_fruits by location buyers
> | eval percentage_fruits=fruits_bought/fruits_sold
> | table fruits_bought fruits_sold buyers
> | where percentage_fruits > 10
> | sort - percentage_fruits
如何完成第 2 个(求和)、第 3 个(总价)、第 4 个 if 循环(触发)的 syntax/expression?
SPL 不做“循环”。一个接近[足够]的模拟是 SPL 中的每一行与 bash 中的单个命令 相似 (因此命令之间的管道分隔符)。 IOW,SPL 在处理中是纯线性的。像这样使用多条件 eval..if
:
index=ndx sourcetype=srctp
| eval myfield=if(match(fieldA,"someval") AND !match(fieldC,"notthis"),"all true","else val")
或者像这样:
| eval myfield=if(match(fieldA,"someval"),if(match(fieldB,"otherval"),"matched A&B",if(!match(fieldC,"notthis"),"not A & not C","else val")))
如果你能更好地解释你的使用case/end目标,我们可能会提供更好的指导