我正在运行一个查询以将 splunk 结果分叉到存储桶中。我想根据它们在磁盘上的大小来划分和计算文件。这可以使用rangemap
或来实现eval case
。
正如我在这里所读到的,使用eval
速度比rangemap
. 但是我在使用两者时得到了不同的结果。
这是我正在运行的查询 -
<source>
| eval size_group = case(SizeInMB < 150, "0-150 MB", SizeInMB < 200 AND SizeInMB >= 150, "150-200 MB", SizeInMB < 300 AND SizeInMB >= 200, "200-300 MB", SizeInMB < 500 AND SizeInMB >= 300, "300-500 MB", SizeInMB < 1000 AND SizeInMB >= 500, "500-1000 MB", SizeInMB > 1000, ">1000 MB")
| stats count by size_group
这就是我得到的结果 -
而使用rangemap
这是查询 -
<source>
| rangemap field=SizeInMB "0-150MB"=0-150 "151-200MB"=150-200 "201-300MB"=200-300 "301-500MB"=300-500 "501-999MB"=500-1000 default="1000MB+"
| stats count by range
我也试过这个范围——rangemap field=SizeInMB "0-150MB"=0-150 "150-200MB"=150-200 "200-300MB"=200-300 "300-500MB"=300-500 "500-1000MB"=500-1000 default="1000MB+"
我得到了同样的结果——
两种图像结果都没有太大差异,我们可能可以忍受它 - 但我看到 150-200MB 的范围 - 它是445958 vs 445961
,对于 200-300 MB 它是3676 vs 3677
,对于 300-500 MB 它是3346 vs 3348
。我想了解为什么会有这种差异,我应该更信任哪一个?Speedwiseeval
似乎更好,但 datawise 是不是不太正确?