我有一个要求,我们每天都会收到文件,文件中提到了相应的日期:
例如,文件名为:
test_dev_08_07_2021.json
test_dev_09_07_2021.json
test_prod_08_07_2021.json
test_prod_09_07_2021.json
现在我们的要求是添加具有相同日期的文件内容。我们正在使用的splink查询如下:
eventtype="metric:sample:example" source="test_dev_.json" OR source="test_prod_.json" | stats sum(number_of_car) as "# Total_Car ",
sum(Parked_cars) as "# Stopped_Cars", sum(Buses) as "# Total_Bus", sum(Parked_buses) as "# Stopped_Buses " by source | addcoltotals
但在那里,它得到了所有四个文件的组合结果:
source # Total Car # Stopped Cars # Total Bus # Stopped Buses
test_dev_08_07_2021.json 23 21 295 124
test_dev_09_07_2021.json 22 22 297 123
test_prod_08_07_2021.json 2 3 429 66
test_prod_09_07_2021.json 2 3 427 66
49 49 1448 379
我们试图实现的是,只有具有相同日期的文件的内容才能添加。例如,如果在test_dev和test_prod中提到日期08_07_221,则只应添加这两个文件内容,并且它应显示日期为09_07_201的文件的结果。我们应该在加法之后得到单独的结果。
请注意:此外,我们每天都会收到这些文件。因此,每个文件的日期和月份范围都会有所不同,我们现在不能更改文件名
我们有什么方法可以完成这项任务吗?或者有人可以帮助我们进行相应的挥霍查询,这将非常有帮助。
请协助。
诀窍是提取日期并将其用作分组字段。
eventtype="metric:sample:example" source="test_dev_.json" OR source="test_prod_.json"
| rex field=source "_(?<groupBy>dd_dd_dddd)"
| stats list(source) as sources sum(number_of_car) as "# Total_Car",
sum(Parked_cars) as "# Stopped_Cars", sum(Buses) as "# Total_Bus",
sum(Parked_buses) as "# Stopped_Buses" by groupBy
| fields - groupBy
| table sources "# Total_Car" "# Stopped_Cars" "# Total_Bus" "# Stopped_Buses"
| addcoltotals