Link Search Menu Expand Document Documentation Menu

导数聚合

derivative 聚合是一种父聚合,用于计算聚合的每个桶的一阶和二阶导数。“一阶导数”和“二阶导数”通常分别缩写为“一阶导数”和“二阶导数”。本页面使用缩写形式。

对于有序的桶序列,derivative 通过计算当前桶和前一个桶中指标值之差来近似一阶导数。

参数

derivative 聚合接受以下参数。

参数 必需/可选 数据类型 描述
buckets_path 必需 字符串 要聚合的聚合桶的路径。参见桶路径
gap_policy 可选 字符串 应用于缺失数据的策略。有效值为 skipinsert_zeros。默认值为 skip。请参阅数据间隙
format 可选 字符串 一个 DecimalFormat 格式化字符串。将格式化后的输出返回到聚合的 value_as_string 属性中。

示例:一阶导数

以下示例使用 OpenSearch Dashboards 电子商务样本数据创建一个以一个月为间隔的日期直方图。sum 子聚合计算每个月的总字节数。最后,derivative 聚合计算 sum 子聚合的一阶导数。一阶导数估计为当前月份与上一个月份的字节数之差。

GET opensearch_dashboards_sample_data_logs/_search
{
  "size": 0,
  "aggs": {
    "sales_per_month": {
      "date_histogram": {
        "field": "@timestamp",
        "calendar_interval": "month"
      },
      "aggs": {
        "number_of_bytes": {
          "sum": {
            "field": "bytes"
          }
        },
        "bytes_deriv": {
          "derivative": {
            "buckets_path": "number_of_bytes"
          }
        }
      }
    }
  }
}

示例响应:一阶导数

响应显示了为第二个和第三个桶计算的导数。

{
  "took": 6,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 10000,
      "relation": "gte"
    },
    "max_score": null,
    "hits": []
  },
  "aggregations": {
    "sales_per_month": {
      "buckets": [
        {
          "key_as_string": "2025-03-01T00:00:00.000Z",
          "key": 1740787200000,
          "doc_count": 480,
          "number_of_bytes": {
            "value": 2804103
          }
        },
        {
          "key_as_string": "2025-04-01T00:00:00.000Z",
          "key": 1743465600000,
          "doc_count": 6849,
          "number_of_bytes": {
            "value": 39103067
          },
          "bytes_deriv": {
            "value": 36298964
          }
        },
        {
          "key_as_string": "2025-05-01T00:00:00.000Z",
          "key": 1746057600000,
          "doc_count": 6745,
          "number_of_bytes": {
            "value": 37818519
          },
          "bytes_deriv": {
            "value": -1284548
          }
        }
      ]
    }
  }
}

第一个桶没有计算导数,因为该桶没有可用的前一个桶。

示例:二阶导数

要计算二阶导数,请将一个导数聚合链接到另一个导数聚合。

GET opensearch_dashboards_sample_data_logs/_search
{
  "size": 0,
  "aggs": {
    "sales_per_month": {
      "date_histogram": {
        "field": "@timestamp",
        "calendar_interval": "month"
      },
      "aggs": {
        "number_of_bytes": {
          "sum": {
            "field": "bytes"
          }
        },
        "bytes_1st_deriv": {
          "derivative": {
            "buckets_path": "number_of_bytes"
          }
        },
        "bytes_2nd_deriv": {
          "derivative": {
            "buckets_path": "bytes_1st_deriv"
          }
        }
      }
    }
  }
}

示例响应:二阶导数

{
  "took": 6,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 10000,
      "relation": "gte"
    },
    "max_score": null,
    "hits": []
  },
  "aggregations": {
    "sales_per_month": {
      "buckets": [
        {
          "key_as_string": "2025-03-01T00:00:00.000Z",
          "key": 1740787200000,
          "doc_count": 480,
          "number_of_bytes": {
            "value": 2804103
          }
        },
        {
          "key_as_string": "2025-04-01T00:00:00.000Z",
          "key": 1743465600000,
          "doc_count": 6849,
          "number_of_bytes": {
            "value": 39103067
          },
          "bytes_1st_deriv": {
            "value": 36298964
          }
        },
        {
          "key_as_string": "2025-05-01T00:00:00.000Z",
          "key": 1746057600000,
          "doc_count": 6745,
          "number_of_bytes": {
            "value": 37818519
          },
          "bytes_1st_deriv": {
            "value": -1284548
          },
          "bytes_2nd_deriv": {
            "value": -37583512
          }
        }
      ]
    }
  }
}

第一个桶没有计算一阶导数,因为该桶没有可用的前一个桶。同样,第一个或第二个桶也没有计算二阶导数。

剩余 350 字符

有问题?

想贡献?