ESと何か関係があります(1.7)、どうすればよいか分かりません。 SQLとテーブルで表示できるかどうかを見てみましょう。ESクエリに変換する方が簡単かもしれません。それは表だった場合 は、テーブルpoints_by_dateElasticsearch:date_rangeバケット上の演算の合計
DATE PURCHASE_COUNT ACCUMULATED_POINTS
day 1 5 548
day 2 8 498
day 3 9 623
day 4 9 635
day 5 13 620
を想像してみて、私は私が必要なものを取得するために、このようなクエリを実行したい:
SELECT SUM(q.AVG_POINT_PURCHASE) as POINT_BY_PURCHASE
FROM (
SELECT (ACCUMULATED_POINTS/PURCHASE_COUNT) as AVG_POINT_PURCHASE
FROM points_by_date
) q;
はESでこれを行うには、それは可能ですか?私は、これらの操作は、日付範囲のバケットを介して行われていることを追加する必要があり、このような何か:
{
"timeout": 1500,
"query": {
"bool": {
"must": [
{
"range": {
"date": {
"from": "2016-12-01",
"to": "2016-12-05",
"include_lower": true,
"include_upper": true
}
}
}
]
}
},
"aggregations": {
"my_ranges": {
"date_range": {
"field": "date",
"ranges": [
{
"from": "2016-12-01",
"to": "2016-12-05"
},
{
"from": "2016-12-06",
"to": "2016-12-10"
}
]
},
"aggregations": {
"TOTAL_POINTS" : {
"sum" : {
"field" : "ACCUMULATED_POINTS"
}
},
"PURCHASE_COUNT" : {
"avg" : {
"field" : "PURCHASE_COUNT"
}
}
}
}
}
}
各日付範囲、私は数学を行う必要があるところから、テーブル内のN行のセットを表します。
ESクエリには以前のアプローチがありました。バケットあたりの平均purchase_countを取得し、その平均でバケットの累積ポイントの合計を後で分割していました。今私は最初に分割し、バケツごとに蓄積する必要があります。可能であればどのような考えですか?
ありがとうございます!