我有简单的数据
sales, date_of_sales
我需要的是每周平均数,即总和(销售)/周数。
请帮助。
我到目前为止是
{
"size": 0,
"aggs": {
"WeekAggergation": {
"date_histogram": {
"field": "date_of_sales",
"interval": "week"
}
},
"TotalSales": {
"sum": {
"field": "sales"
}
},
"myValue": {
"bucket_script": {
"buckets_path": {
"myGP": "TotalSales",
"myCount": "WeekAggergation._bucket_count"
},
"script": "params.myGP/params.myCount"
}
}
}
}
我收到错误
Invalid pipeline aggregation named [myValue] of type [bucket_script].
Only sibling pipeline aggregations are allowed at the top level.
答案 0 :(得分:1)
我认为这可能会有所帮助:
{
"size": 0,
"aggs": {
"WeekAggergation": {
"date_histogram": {
"field": "date_of_sale",
"interval": "week",
"format": "yyyy-MM-dd"
},
"aggs": {
"TotalSales": {
"sum": {
"field": "sales"
}
},
"AvgSales": {
"avg": {
"field": "sales"
}
}
}
},
"avg_all_weekly_sales": {
"avg_bucket": {
"buckets_path": "WeekAggergation>TotalSales"
}
}
}
}
请注意,TotalSales
聚合现在是每周直方图聚合下的嵌套聚合(我相信所提供的代码中有拼写错误-所提供的简单模式指示了date_of_sale
的字段名称和聚合提供的格式使用复数形式date_of_sales
)。这将为您提供每周时段中的所有销售总额。
此外,AvgSales
在每周直方图汇总下提供了类似的嵌套汇总,因此您可以查看该周所有特定销售的平均值。
最后,管道聚合avg_all_weekly_sales
将根据TotalSales
存储桶和非空存储桶的数量给出每周的平均销售额-如果要包括空存储桶,请添加{{ 1}}参数,如下所示:
gap_policy
这种管道聚合可能不是您真正想要的,所以请检查数学以确保结果符合预期,但应基于原始脚本提供正确的输出。