查找中位数
此页面记录了早期版本的 InfluxDB OSS。InfluxDB OSS v2 是最新的稳定版本。请参阅等效的 InfluxDB v2 文档: 查找中位数。
使用 median()
函数 返回表示输入数据的 0.5
分位数(第 50 个百分位数)或中位数的值。
选择计算中位数的方法
选择以下方法之一来计算中位数
estimate_tdigest
(默认) 一种聚合方法,它使用 t-digest 数据结构 在大型数据源上计算精确的 0.5
分位数估计值。输出表由包含计算出的中位数的单行组成。
给定以下输入表
_time | _value |
---|---|
2020-01-01T00:01:00Z | 1.0 |
2020-01-01T00:02:00Z | 1.0 |
2020-01-01T00:03:00Z | 2.0 |
2020-01-01T00:04:00Z | 3.0 |
estimate_tdigest
返回
_value |
---|
1.5 |
exact_mean
一种聚合方法,它取最接近 0.5
分位数的两个点的平均值。输出表由包含计算出的中位数的单行组成。
给定以下输入表
_time | _value |
---|---|
2020-01-01T00:01:00Z | 1.0 |
2020-01-01T00:02:00Z | 1.0 |
2020-01-01T00:03:00Z | 2.0 |
2020-01-01T00:04:00Z | 3.0 |
exact_mean
返回
_value |
---|
1.5 |
exact_selector
一种选择器方法,它返回至少 50% 的点小于该值的数据点。输出表由包含计算出的中位数的单行组成。
给定以下输入表
_time | _value |
---|---|
2020-01-01T00:01:00Z | 1.0 |
2020-01-01T00:02:00Z | 1.0 |
2020-01-01T00:03:00Z | 2.0 |
2020-01-01T00:04:00Z | 3.0 |
exact_selector
返回
_time | _value |
---|---|
2020-01-01T00:02:00Z | 1.0 |
以下示例使用示例数据变量。
查找代表中位数的值
使用默认方法 "estimate_tdigest"
返回表中包含表中数据第 50 个百分位数的所有行。
data
|> median()
查找最接近中位数值的平均值
使用 exact_mean
方法返回每个输入表的单行,其中包含最接近表中数据数学中位数的两个值的平均值。
data
|> median(method: "exact_mean")
查找具有中位数值的点
使用 exact_selector
方法返回每个输入表的单行,其中包含表中 50% 的值小于的值。
data
|> median(method: "exact_selector")
将 median() 与 aggregateWindow() 结合使用
aggregateWindow()
将数据分段到时间窗口中,将每个窗口中的数据聚合为单个点,然后删除基于时间的分割。它主要用于降采样数据。
要在 aggregateWindow()
中指定中位数计算方法,请使用完整函数语法
data
|> aggregateWindow(
every: 5m,
fn: (tables=<-, column) => tables |> median(method: "exact_selector")
)
此页对您有帮助吗?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一份子!我们欢迎并鼓励您提供关于 InfluxDB 和本文档的反馈和错误报告。要寻求支持,请使用以下资源
拥有年度合同或支持合同的客户 可以联系 InfluxData 支持。