当前位置: 首页 > news >正文

【Elasticsearch】derivative聚合

1.定义与用途

`derivative`聚合是一种管道聚合(pipeline aggregation),用于计算指定度量(metric)的变化率。它通过计算当前值与前一个值之间的差异来实现这一点。这种聚合特别适用于分析时间序列数据,例如监控系统中的指标变化、销售数据的趋势分析等。

2.工作原理

`derivative`聚合的核心是计算相邻数据点之间的差异。具体来说,它会根据指定的`buckets_path`获取数据点,并计算每个数据点与前一个数据点之间的差值。第一个数据点没有前一个值,因此不会生成导数值。

3.参数

• `buckets_path`:必需参数,指定要计算导数的聚合路径。例如,如果要计算某个`sum`聚合的导数,`buckets_path`应指向该聚合的名称。

• `gap_policy`:可选参数,定义如何处理数据中的间隙。默认值为`skip`,表示跳过缺失的数据点。

• `format`:可选参数,定义输出值的格式。如果指定,格式化的值将返回在聚合的`value_as_string`属性中。

4.应用场景

`derivative`聚合广泛应用于以下场景:

• 趋势分析:通过计算销售额、流量等指标的变化率,可以快速识别增长或下降趋势。

• 异常检测:通过分析导数值的异常波动,可以及时发现数据中的异常情况。

5.示例

以下是一个具体的例子,展示如何使用`derivative`聚合来计算每月销售额的变化率。

假设我们有一个索引`sales`,其中记录了每次销售的日期(`date`字段)和销售金额(`price`字段)。我们希望计算每月销售额的变化率。

查询示例:

```json

POST /sales/_search

{

  "size": 0,

  "aggs": {

    "sales_per_month": {

      "date_histogram": {

        "field": "date",

        "calendar_interval": "month"

      },

      "aggs": {

        "sales": {

          "sum": {

            "field": "price"

          }

        },

        "sales_deriv": {

          "derivative": {

            "buckets_path": "sales"

          }

        }

      }

    }

  }

}

```

响应结果:

```json

{

   "took": 11,

   "timed_out": false,

   "_shards": ...,

   "hits": ...,

   "aggregations": {

      "sales_per_month": {

         "buckets": [

            {

               "key_as_string": "2015-01-01T00:00:00.000Z",

               "key": 1420070400000,

               "doc_count": 2,

               "sales": {

                  "value": 1050.0

               }

            },

            {

               "key_as_string": "2015-02-01T00:00:00.000Z",

               "key": 1422748800000,

               "doc_count": 2,

               "sales": {

                  "value": 60.0

               },

               "sales_deriv": {

                  "value": -990.0

               }

            },

            {

               "key_as_string": "2015-03-01T00:00:00.000Z",

               "key": 1425168000000,

               "doc_count": 2,

               "sales": {

                  "value": 375.0

               },

               "sales_deriv": {

                  "value": 315.0

               }

            }

         ]

      }

   }

}

```

结果解释:

• 2015-01:总销售额为 1050,没有导数值(因为这是第一个数据点)。

• 2015-02:总销售额为 60,导数值为-990(表示销售额从 1050 下降到 60,变化率为-990)。

• 2015-03:总销售额为 375,导数值为 315(表示销售额从 60 增加到 375,变化率为 315)。

6.注意事项

• 数据完整性:确保数据中没有缺失值,否则可能需要设置合适的`gap_policy`。

• 单位转换:可以通过`unit`参数将导数的单位从默认的时间单位(如每月)转换为其他单位(如每天),方便更直观地分析数据。

通过`derivative`聚合,您可以轻松地分析数据的变化趋势,从而更好地理解数据的动态变化。希望这些内容对您有所帮助!

http://www.lryc.cn/news/534996.html

相关文章:

  • 4.7.KMP算法(新版)
  • iOS AES/CBC/CTR加解密以及AES-CMAC
  • 错误报告:WebSocket 设备连接断开处理问题
  • 点云配准网络
  • 黑马Redis详细笔记(实战篇---短信登录)
  • 51单片机俄罗斯方块整行消除函数
  • Vue 3 30天精进之旅:Day 21 - 项目实践:打造功能完备的Todo应用
  • 32单片机学习记录1之GPIO
  • AI 编程助手 Cline
  • YOLOv11-ultralytics-8.3.67部分代码阅读笔记-patches.py
  • R语言LCMM多维度潜在类别模型流行病学研究:LCA、MM方法分析纵向数据
  • 2025 年前端开发现状分析:卷疯了还是卷麻了?
  • RDK新一代模型转换可视化工具!!!
  • JVM春招快速学习指南
  • C#中的序列化和反序列化
  • xcode常见设置
  • PG高可用学习@2
  • centos 8和centos 9 stream x64的区别
  • C++基础学习记录—类
  • 云原生时代的后端开发:架构、工具与最佳实践
  • ARM Cortex-M3/M4 权威指南 笔记【一】技术综述
  • 12.项目结构
  • 保研考研机试攻略:python笔记(4)
  • 高阶C语言|枚举与联合
  • 【天梯赛】L1-104 九宫格(C++)
  • 现代C++多线程基础 -忆苦思甜pthread_mutex
  • soular基础教程-使用指南
  • 网络安全网格架构(CSMA) 网络安全框架csf
  • 基于DeepSeek API和VSCode的自动化网页生成流程
  • 【AI时代】Page Assist - 本地 AI 模型的 Web UI (谷歌浏览器) 本地DeepSeek启用联网功能