Percentile Ranks Aggregation

Percentile Ranks Aggregation

  一个multi-value指标聚合,它通过从聚合文档中提取数值来计算一个或多个百分比。这些值可以从特定数值字段中提取,也可以由提供的脚本生成。

    注意:请参考百分比(通常)近视值(percentiles are (usually approximate))和压缩(Compression)以获得关于近视值的建议和内存使用的百分比排位聚合。

  百分比排位展示那些在某一值之下的观测值的百分比。例如,假如某一直大于等于被观测值的95%,则称其为第95百分位数。

  假设你的数据由网页加载时间组成。你可能有一个服务协议,95%页面需要在15ms加载完全,99%页面在30ms加载完全。

  让我们看一下代表加载时间的百分位数:

{
    "aggs" : {
        "load_time_outlier" : {
            "percentile_ranks" : {
                "field" : "load_time", 【1】
                "values" : [15, 30]
            }
        }
    }
}

  【1】load_time必须是一个数值字段

  应答看起来像这个样子:

{
    ...

   "aggregations": {
      "load_time_outlier": {
         "values" : {
            "15": 92,
            "30": 100
         }
      }
   }
}

  从这些信息你可以确定,你已经达到了99%的加载时间目标,但没有达到95%的加载时间目标。

Script

  百分位数度量支持脚本。例如,假如加载时间是在毫秒级,当我们想指定值在秒级,我们可以使用脚本来实时转化它们: 

{
    "aggs" : {
        "load_time_outlier" : {
            "percentile_ranks" : {
                "values" : [3, 5],
                "script" : {
                    "lang": "painless",
                    "inline": "doc['load_time'].value / params.timeUnit", 【1】
                    "params" : {
                        "timeUnit" : 1000   【2】
                    }
                }
            }
        }
    }
}

  【1】field参数被一个script参数替代,使用脚本生成计算百分位数的值。

  【2】脚本支持参数化输入,就像其它任何脚本一样

  通过painless脚本语言和无脚本参数将script参数翻译为一个inline脚本。要使用文件脚本,使用以下语法:

{
    "aggs" : {
        "load_time_outlier" : {
            "percentile_ranks" : {
                "values" : [3, 5],
                "script" : {
                    "file": "my_script",
                    "params" : {
                        "timeUnit" : 1000
                    }
                }
            }
        }
    }
}

  TIP:索引脚本通过id参数替代file参数

HDR Histogram

  警告:该功能是实验性的,并且在将来的版本中可能被修改或者完全移除。Elastic采用最大努力来解决任何问题,但是试验功能不受SLA官方GA功能的支持。

  HDR Histogram(高动态范围柱状图)是一种替代实现,在计算延迟测量的百分比数量级时可能很有用,因为它比t-digest实现更快,同时占用更大的内存空间。该实现维持固定的较差的百分比错误(指定为有效数字的数量)。这意味着如果在柱状图中设置3位有效数字的数据被记录在1微妙至1小时(3600,000,000微妙)之间,它将保持从1微妙值增加到为最大跟踪值(1小时)保留1毫秒和3.6分钟(或更好)分辨率。

  HDR Histogram可以通过在request中指定method参数来使用:

{
    "aggs" : {
        "load_time_outlier" : {
            "percentile_ranks" : {
                "field" : "load_time",
                "values" : [15, 30],
                "hdr": { 【1】
                  "number_of_significant_value_digits" : 3 【2】
                }
            }
        }
    }
}

  【1】hdr对象表示应该使用HRD Histogram来计算百分位数,并且可以在对象内部指定该算法的具体设置。

  【2】number_of_significant_value_digits表示以有效数字值表示柱状图的分辨率。

  HDR Histogram仅仅支持绝对值,假如传递的是一个相对值则将错误。假如值范围不知道,使用HDR Histogram也不是一个好的主意,因为它将导致高内存使用。

Missing value

  missing参数定义该如何处理缺省值的文档。默认情况下,他们将被忽略,但是假如他们已经有一个值了,它也可能被处理。

{
    "aggs" : {
        "grade_ranks" : {
            "percentile_ranks" : {
                "field" : "grade",
                "missing": 10 【1】
            }
        }
    }
}

  【1】在grade字段中没有值的文档将和有值10的文档放入相同的bucket中。

 

原文地址:https://www.elastic.co/guide/en/elasticsearch/reference/5.0/search-aggregations-metrics-percentile-rank-aggregation.html

转载于:https://www.cnblogs.com/benjiming/p/7099638.html

百分位数是一个统计概念,用来表示一组数据中某个特定百分比处的值。它可以帮助我们分析数据的分布和比较不同数据集之间的差异。引用展示了一个使用JavaScript库stats-percentile来计算指定数据集的百分位数的例子。在这个例子中,给定数组[3, 6, 7, 8, 8, 10, 13, 15, 16, 20],计算出75%百分位数为15。 在Python的NumPy库中,也提供了相应的函数percentile()来计算指定维度上数组元素的第n个百分位数。函数的定义如引用所示,其中a是输入的数组,q是要计算的百分位数,axis表示在哪个维度上进行计算,out是输出的数组,interpolation是插值方法,keepdims表示是否保留原数组的维度信息。这个函数可以返回标量或者数组。 百分位数在统计学和数据分析中有广泛的应用。它可以用来描述一组数据的中心趋势和离散程度,以及比较不同数据集之间的差异。在医学领域中,百分位数常被用来计算BMI指数,来评估一个人体重的健康水平。更多关于百分位数的应用和计算方法,可以参考引用。 总结起来,百分位数是用来表示一组数据中某个特定百分比处的值的统计指标。可以使用不同的编程语言和库来计算百分位数,如JavaScript的stats-percentile库和Python的NumPy库。百分位数在数据分析和医学领域有广泛的应用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [stats-percentile:计算第 n 个百分位数](https://download.csdn.net/download/weixin_42170790/20710766)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [NumPy的实用函数整理之percentile](https://blog.csdn.net/weixin_45031468/article/details/122690148)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [关于百分位数(percentile)](https://blog.csdn.net/qq_42931274/article/details/104135962)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值