移動パーセンタイル集約

順序付けられたパーセンタイルの系列が与えられた場合、移動パーセンタイル集約はそれらのパーセンタイルにウィンドウをスライドさせ、ユーザーが累積パーセンタイルを計算できるようにします。

これは、実際のバケット値ではなく、パーセンタイルスケッチで動作する点を除けば、移動関数パイプライン集約と概念的に非常に似ています。

構文

単独でのmoving_percentiles集約は次のようになります:

Js

  1. {
  2. "moving_percentiles": {
  3. "buckets_path": "the_percentile",
  4. "window": 10
  5. }
  6. }


表74. moving_percentiles パラメータ

パラメータ名 説明 必須 デフォルト値
buckets_path 関心のあるパーセンタイルへのパス(詳細についてはbuckets_path 構文を参照) 必須
window ヒストグラムに対して「スライド」させるウィンドウのサイズ。 必須
shift ウィンドウ位置のシフト. オプション 0
  1. #### Python
  2. ``````python
  3. resp = client.search(
  4. size=0,
  5. aggs={
  6. "my_date_histo": {
  7. "date_histogram": {
  8. "field": "date",
  9. "calendar_interval": "1M"
  10. },
  11. "aggs": {
  12. "the_percentile": {
  13. "percentiles": {
  14. "field": "price",
  15. "percents": [
  16. 1,
  17. 99
  18. ]
  19. }
  20. },
  21. "the_movperc": {
  22. "moving_percentiles": {
  23. "buckets_path": "the_percentile",
  24. "window": 10
  25. }
  26. }
  27. }
  28. }
  29. },
  30. )
  31. print(resp)
  32. `

Ruby

  1. response = client.search(
  2. body: {
  3. size: 0,
  4. aggregations: {
  5. my_date_histo: {
  6. date_histogram: {
  7. field: 'date',
  8. calendar_interval: '1M'
  9. },
  10. aggregations: {
  11. the_percentile: {
  12. percentiles: {
  13. field: 'price',
  14. percents: [
  15. 1,
  16. 99
  17. ]
  18. }
  19. },
  20. the_movperc: {
  21. moving_percentiles: {
  22. buckets_path: 'the_percentile',
  23. window: 10
  24. }
  25. }
  26. }
  27. }
  28. }
  29. }
  30. )
  31. puts response

Js

  1. const response = await client.search({
  2. size: 0,
  3. aggs: {
  4. my_date_histo: {
  5. date_histogram: {
  6. field: "date",
  7. calendar_interval: "1M",
  8. },
  9. aggs: {
  10. the_percentile: {
  11. percentiles: {
  12. field: "price",
  13. percents: [1, 99],
  14. },
  15. },
  16. the_movperc: {
  17. moving_percentiles: {
  18. buckets_path: "the_percentile",
  19. window: 10,
  20. },
  21. },
  22. },
  23. },
  24. },
  25. });
  26. console.log(response);

コンソール

  1. POST /_search
  2. {
  3. "size": 0,
  4. "aggs": {
  5. "my_date_histo": {
  6. "date_histogram": {
  7. "field": "date",
  8. "calendar_interval": "1M"
  9. },
  10. "aggs": {
  11. "the_percentile": {
  12. "percentiles": {
  13. "field": "price",
  14. "percents": [ 1.0, 99.0 ]
  15. }
  16. },
  17. "the_movperc": {
  18. "moving_percentiles": {
  19. "buckets_path": "the_percentile",
  20. "window": 10
  21. }
  22. }
  23. }
  24. }
  25. }
  26. }
“timestamp”フィールドに基づいて「my_date_histo」という名前のdate_histogramが構築され、1日間隔で
フィールドのパーセンタイルを計算するためにpercentileメトリックが使用されます。
最後に、「the_percentile」スケッチを入力として使用するmoving_percentiles集約を指定します。

移動パーセンタイルは、最初にフィールドに対してhistogramまたはdate_histogramを指定することによって構築されます。その後、そのヒストグラム内にパーセンタイルメトリックを追加します。最後に、moving_percentilesがヒストグラム内に埋め込まれます。buckets_pathパラメータは、ヒストグラム内のパーセンタイル集約を「指し示す」ために使用されます(buckets_path 構文の説明についてはこちらを参照)。

次のような応答が得られる場合があります:

コンソール-結果

  1. {
  2. "took": 11,
  3. "timed_out": false,
  4. "_shards": ...,
  5. "hits": ...,
  6. "aggregations": {
  7. "my_date_histo": {
  8. "buckets": [
  9. {
  10. "key_as_string": "2015/01/01 00:00:00",
  11. "key": 1420070400000,
  12. "doc_count": 3,
  13. "the_percentile": {
  14. "values": {
  15. "1.0": 151.0,
  16. "99.0": 200.0
  17. }
  18. }
  19. },
  20. {
  21. "key_as_string": "2015/02/01 00:00:00",
  22. "key": 1422748800000,
  23. "doc_count": 2,
  24. "the_percentile": {
  25. "values": {
  26. "1.0": 10.4,
  27. "99.0": 49.6
  28. }
  29. },
  30. "the_movperc": {
  31. "values": {
  32. "1.0": 151.0,
  33. "99.0": 200.0
  34. }
  35. }
  36. },
  37. {
  38. "key_as_string": "2015/03/01 00:00:00",
  39. "key": 1425168000000,
  40. "doc_count": 2,
  41. "the_percentile": {
  42. "values": {
  43. "1.0": 175.25,
  44. "99.0": 199.75
  45. }
  46. },
  47. "the_movperc": {
  48. "values": {
  49. "1.0": 11.6,
  50. "99.0": 200.0
  51. }
  52. }
  53. }
  54. ]
  55. }
  56. }
  57. }

moving_percentiles集約の出力形式は、参照されたpercentiles集約の形式を継承します。

移動パーセンタイルパイプライン集約は常にskipギャップポリシーで実行されます。

シフトパラメータ

デフォルトでは(shift = 0を使用)、計算に提供されるウィンドウは、現在のバケットを除く最後のn値です。shiftを1増やすと、開始ウィンドウ位置が1だけ右に移動します。

  • 現在のバケットをウィンドウに含めるには、shift = 1を使用します。
  • 中央揃え(n / 2現在のバケットの前後の値)を使用するには、shift = window / 2を使用します。
  • 右揃え(n現在のバケットの後の値)を使用するには、shift = windowを使用します。

ウィンドウのいずれかの端がデータ系列の境界を超えると、ウィンドウは利用可能な値のみを含むように縮小されます。