移動パーセンタイル集約
順序付けられたパーセンタイルの系列が与えられた場合、移動パーセンタイル集約はそれらのパーセンタイルにウィンドウをスライドさせ、ユーザーが累積パーセンタイルを計算できるようにします。
これは、実際のバケット値ではなく、パーセンタイルスケッチで動作する点を除けば、移動関数パイプライン集約と概念的に非常に似ています。
構文
単独でのmoving_percentiles
集約は次のようになります:
Js
{
"moving_percentiles": {
"buckets_path": "the_percentile",
"window": 10
}
}
パラメータ名 | 説明 | 必須 | デフォルト値 |
---|---|---|---|
buckets_path |
関心のあるパーセンタイルへのパス(詳細についてはbuckets_path 構文を参照) |
必須 | |
window |
ヒストグラムに対して「スライド」させるウィンドウのサイズ。 | 必須 | |
shift |
ウィンドウ位置のシフト. | オプション | 0 |
#### Python
``````python
resp = client.search(
size=0,
aggs={
"my_date_histo": {
"date_histogram": {
"field": "date",
"calendar_interval": "1M"
},
"aggs": {
"the_percentile": {
"percentiles": {
"field": "price",
"percents": [
1,
99
]
}
},
"the_movperc": {
"moving_percentiles": {
"buckets_path": "the_percentile",
"window": 10
}
}
}
}
},
)
print(resp)
`
Ruby
response = client.search(
body: {
size: 0,
aggregations: {
my_date_histo: {
date_histogram: {
field: 'date',
calendar_interval: '1M'
},
aggregations: {
the_percentile: {
percentiles: {
field: 'price',
percents: [
1,
99
]
}
},
the_movperc: {
moving_percentiles: {
buckets_path: 'the_percentile',
window: 10
}
}
}
}
}
}
)
puts response
Js
const response = await client.search({
size: 0,
aggs: {
my_date_histo: {
date_histogram: {
field: "date",
calendar_interval: "1M",
},
aggs: {
the_percentile: {
percentiles: {
field: "price",
percents: [1, 99],
},
},
the_movperc: {
moving_percentiles: {
buckets_path: "the_percentile",
window: 10,
},
},
},
},
},
});
console.log(response);
コンソール
POST /_search
{
"size": 0,
"aggs": {
"my_date_histo": {
"date_histogram": {
"field": "date",
"calendar_interval": "1M"
},
"aggs": {
"the_percentile": {
"percentiles": {
"field": "price",
"percents": [ 1.0, 99.0 ]
}
},
"the_movperc": {
"moving_percentiles": {
"buckets_path": "the_percentile",
"window": 10
}
}
}
}
}
}
“timestamp”フィールドに基づいて「my_date_histo」という名前のdate_histogram が構築され、1日間隔で |
|
フィールドのパーセンタイルを計算するためにpercentile メトリックが使用されます。 |
|
最後に、「the_percentile」スケッチを入力として使用するmoving_percentiles 集約を指定します。 |
移動パーセンタイルは、最初にフィールドに対してhistogram
またはdate_histogram
を指定することによって構築されます。その後、そのヒストグラム内にパーセンタイルメトリックを追加します。最後に、moving_percentiles
がヒストグラム内に埋め込まれます。buckets_path
パラメータは、ヒストグラム内のパーセンタイル集約を「指し示す」ために使用されます(buckets_path
構文の説明についてはこちらを参照)。
コンソール-結果
{
"took": 11,
"timed_out": false,
"_shards": ...,
"hits": ...,
"aggregations": {
"my_date_histo": {
"buckets": [
{
"key_as_string": "2015/01/01 00:00:00",
"key": 1420070400000,
"doc_count": 3,
"the_percentile": {
"values": {
"1.0": 151.0,
"99.0": 200.0
}
}
},
{
"key_as_string": "2015/02/01 00:00:00",
"key": 1422748800000,
"doc_count": 2,
"the_percentile": {
"values": {
"1.0": 10.4,
"99.0": 49.6
}
},
"the_movperc": {
"values": {
"1.0": 151.0,
"99.0": 200.0
}
}
},
{
"key_as_string": "2015/03/01 00:00:00",
"key": 1425168000000,
"doc_count": 2,
"the_percentile": {
"values": {
"1.0": 175.25,
"99.0": 199.75
}
},
"the_movperc": {
"values": {
"1.0": 11.6,
"99.0": 200.0
}
}
}
]
}
}
}
moving_percentiles
集約の出力形式は、参照されたpercentiles
集約の形式を継承します。
移動パーセンタイルパイプライン集約は常にskip
ギャップポリシーで実行されます。
シフトパラメータ
デフォルトでは(shift = 0
を使用)、計算に提供されるウィンドウは、現在のバケットを除く最後のn
値です。shift
を1増やすと、開始ウィンドウ位置が1
だけ右に移動します。
- 現在のバケットをウィンドウに含めるには、
shift = 1
を使用します。 - 中央揃え(
n / 2
現在のバケットの前後の値)を使用するには、shift = window / 2
を使用します。 - 右揃え(
n
現在のバケットの後の値)を使用するには、shift = window
を使用します。
ウィンドウのいずれかの端がデータ系列の境界を超えると、ウィンドウは利用可能な値のみを含むように縮小されます。