I have file containing data from ubereats orders. I want to know the average orders per hour per day. The file contains order data from 52 weeks. I managed to get the data per hour per mondays, tuesdays etc. But did not manage yet to get the average order per hour on monday, tuesday etc.
search_body = {
"size": 0,
"aggs": {
"total_orders_per_day_of_week": {
"terms": {
"script": {
"lang": "painless",
"source": "doc['dateTime'].value.dayOfWeek"
}
},
"aggs": {
"countPerHour": {
"terms": {
"size": 24,
"script": "return doc['dateTime'].value.getHour();"
}
}
}
}
}
}
Maybe I need to do something like I did to calculate the average order per day?
search_body = {
"size" : 0,
"aggs" : {
"orders_per_day" : {
"terms" : {
"script" : {
"lang": "painless",
"source": "doc['dateTime'].value.dayOfWeek"
}
},
"aggs" : {
"numberOfOccurrences" : {
"cardinality": {
"script" : {
"lang": "painless",
"source": "doc['dateTime'].value.dayOfYear"
}
}
}
},
}
}
}
for day in result["aggregations"]["orders_per_day"]["buckets"]:
print (day["key"], day["doc_count"], day["numberOfOccurrences"]["value"],
day["doc_count"]/day["numberOfOccurrences"]["value"])