[英]Elasticsearch, how to get orders per hour per day
我有包含 ubereats 訂單數據的文件。 我想知道每天每小時的平均訂單量。 該文件包含 52 周的訂單數據。 我設法在每個星期一、星期二等處獲得每小時的數據。但是還沒有設法在星期一、星期二等處獲得每小時的平均訂單。
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();"
}
}
}
}
}
}
也許我需要做一些事情來計算每天的平均訂單?
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"])
如果我這次理解正確,您希望獲得星期一、星期二每小時的平均值……所以應該有 24x7 的結果。 如果是這樣,請執行以下操作:
{
"size": 0,
"aggs": {
"orders_per_hour_of_day": {
"terms": {
"script" : {
"lang": "painless",
"source": "doc['dateTime'].value.getHour()"
},
"size": 24
},
"aggs": {
"total_orders_per_day_of_week": {
"terms": {
"script": {
"lang": "painless",
"source": "doc['dateTime'].value.getDayOfWeekEnum()"
}
},
"aggs": {
"number_of_weeks": {
"date_histogram": {
"field": "dateTime",
"calendar_interval": "week"
}
},
"average_orders_per_hour_day_of_week": {
"bucket_script": {
"buckets_path": {
"doc_count": "_count",
"number_of_weeks": "number_of_weeks._bucket_count"
},
"script": "params.doc_count / params.number_of_weeks"
}
}
}
}
}
}
}
}
從這里改編的代碼: https : //discuss.elastic.co/t/average-per-day-of-week-aggregation/124132
我不確定我是否清楚地理解你的問題。 聽起來您想要獲得周一、周二、...周日的平均訂單。 如果這是問題,您可以將每個存儲桶划分為 24 小時。
{
"size": 0,
"aggs": {
"orders_per_day": {
"terms": {
"script": {
"lang": "painless",
"source": "doc['dateTime'].value.dayOfWeek"
}
},
"aggs": {
"avg_per_hour": {
"bucket_script": {
"buckets_path": {
"count": "_count"
},
"script": "params.count / 24"
}
}
}
}
}
}
桶聚合:
https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-pipeline-bucket-script-aggregation.html
存儲桶 doc_count 的路徑:
https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-pipeline.html#_special_paths
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.