【Elasticsearch】cumulative_cardinality

1.定义与用途

`cumulative_cardinality`是一种父级管道聚合(Parent Pipeline Aggregation),用于在父级直方图(`histogram`)或日期直方图(`date_histogram`)聚合中计算累计基数。它主要用于统计在某个时间范围内“新增”的唯一项目数量,例如每天访问网站的新访客数量。

2.工作原理

`cumulative_cardinality`聚合会计算每个时间桶中的唯一值数量,并将这些值累计起来。它依赖于父级直方图中的某个基数聚合(`cardinality`)结果。具体来说,它会从第一个时间桶开始,逐个累加每个桶中的唯一值数量,从而得到每个时间点的累计唯一值数量。

3.参数

• `buckets_path`:必需参数,指定要计算累计基数的基数聚合路径。

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

4.应用场景

`cumulative_cardinality`聚合特别适用于以下场景:

• 统计新增用户:例如,每天访问网站的新访客数量。

• 分析趋势:通过累计唯一值的变化,可以分析数据的增长趋势。

5.示例

假设我们有一个索引`user_hits`,其中记录了每次用户访问的日期(`timestamp`字段)和用户ID(`user_id`字段)。我们希望计算每天新增的唯一用户数量。

查询示例:

```json

GET /user_hits/_search

{

  "size": 0,

  "aggs": {

    "users_per_day": {

      "date_histogram": {

        "field": "timestamp",

        "calendar_interval": "day"

      },

      "aggs": {

        "distinct_users": {

          "cardinality": {

            "field": "user_id"

          }

        },

        "total_new_users": {

          "cumulative_cardinality": {

            "buckets_path": "distinct_users"

          }

        }

      }

    }

  }

}

```

 

 

响应结果:

 

```json

{

   "took": 11,

   "timed_out": false,

   "_shards": ...,

   "hits": ...,

   "aggregations": {

      "users_per_day": {

         "buckets": [

            {

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

               "key": 1546300800000,

               "doc_count": 2,

               "distinct_users": {

                  "value": 2

               },

               "total_new_users": {

                  "value": 2

               }

            },

            {

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

               "key": 1546387200000,

               "doc_count": 2,

               "distinct_users": {

                  "value": 2

               },

               "total_new_users": {

                  "value": 3

               }

            },

            {

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

               "key": 1546473600000,

               "doc_count": 3,

               "distinct_users": {

                  "value": 3

               },

               "total_new_users": {

                  "value": 4

               }

            }

         ]

      }

   }

}

```

结果解释:

• 2019-01-01:当天有2个唯一用户,且都是新增用户。

• 2019-01-02:当天有2个唯一用户,但累计新增用户数为3,说明当天只有1个是新增用户。

• 2019-01-03:当天有3个唯一用户,累计新增用户数为4,说明当天只有1个是新增用户。

6.增量累计基数

有时,我们不仅需要累计总数,还需要查看每天新增的用户数(而不是累计总数)。这可以通过在查询中添加一个`derivative`聚合来实现。

查询示例:

```json

GET /user_hits/_search

{

  "size": 0,

  "aggs": {

    "users_per_day": {

      "date_histogram": {

        "field": "timestamp",

        "calendar_interval": "day"

      },

      "aggs": {

        "distinct_users": {

          "cardinality": {

            "field": "user_id"

          }

        },

        "total_new_users": {

          "cumulative_cardinality": {

            "buckets_path": "distinct_users"

          }

        },

        "incremental_new_users": {

          "derivative": {

            "buckets_path": "total_new_users"

          }

        }

      }

    }

  }

}

```

响应结果:

```json

{

   "took": 11,

   "timed_out": false,

   "_shards": ...,

   "hits": ...,

   "aggregations": {

      "users_per_day": {

         "buckets": [

            {

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

               "key": 1546300800000,

               "doc_count": 2,

               "distinct_users": {

                  "value": 2

               },

               "total_new_users": {

                  "value": 2

               }

            },

            {

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

               "key": 1546387200000,

               "doc_count": 2,

               "distinct_users": {

                  "value": 2

               },

               "total_new_users": {

                  "value": 3

               },

               "incremental_new_users": {

                  "value": 1.0

               }

            },

            {

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

               "key": 1546473600000,

               "doc_count": 3,

               "distinct_users": {

                  "value": 3

               },

               "total_new_users": {

                  "value": 4

               },

               "incremental_new_users": {

                  "value": 1.0

               }

            }

         ]

      }

   }

}

```

结果解释:

• 2019-01-01:新增用户数为2。

• 2019-01-02:新增用户数为1。

• 2019-01-03:新增用户数为1。

通过这种方式,您可以清晰地了解每天新增的唯一用户数量,而不仅仅是累计总数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/69719.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1.【线性代数】——方程组的几何解释

一 方程组的几何解释 概述举例举例一1. matrix2.row picture3.column picture 概述 三种表示方法 matrixrow picturecolumn picture 举例 举例一 { 2 x − y 0 − x 2 y 3 \begin{cases} 2x - y 0 \\ -x 2y 3 \end{cases} {2x−y0−x2y3​ 1. matrix [ 2 − 1 − 1 …

ZZNUOJ(C/C++)基础练习1091——1100(详解版)⭐

目录 1091 : 童年生活二三事(多实例测试) C C 1092 : 素数表(函数专题) C C 1093 : 验证哥德巴赫猜想(函数专题) C C 1094 : 统计元音(函数专题) C C 1095 : 时间间隔(多…

innovus如何分步长func和dft时钟

在Innovus工具中,分步处理功能时钟(func clock)和DFT时钟(如扫描测试时钟)需要结合设计模式(Function Mode和DFT Mode)进行约束定义、时钟树综合(CTS)和时序分析。跟随分…

java高级知识之集合

前言 集合是java开发中的重点内容,需要掌握的东西很多,面试中可问的东西很多,无论是深度还是广度。集合框架中Collection对应的实现类如下所示,这些都是要完全掌握,一个可以分为三大类List集合、Set‘集合以及Map集合…

51c自动驾驶~合集49

我自己的原文哦~ https://blog.51cto.com/whaosoft/13164876 #Ultra-AV 轨迹预测新基准!清华开源:统一自动驾驶纵向轨迹数据集 自动驾驶车辆在交通运输领域展现出巨大潜力,而理解其纵向驾驶行为是实现安全高效自动驾驶的关键。现有的开…

Unity-Mirror网络框架-从入门到精通之MultipleMatches示例

文章目录 前言MultipleMatchesLobbyViewRoomViewMatchGUIPlayerGUI总结前言 在现代游戏开发中,网络功能日益成为提升游戏体验的关键组成部分。本系列文章将为读者提供对Mirror网络框架的深入了解,涵盖从基础到高级的多个主题。Mirror是一个用于Unity的开源网络框架,专为多人…

VMware Workstation创建虚拟机

目录 创建新的虚拟机 虚拟机快照功能 虚拟机添加空间 其他注意事项 创建新的虚拟机 打开VMware Workstation:启动软件后,点击“创建新的虚拟机”。 选择安装方式: 典型安装:适合大多数用户,会自动完成大部分配置…

DeepSeek AI R1推理大模型API集成文档

DeepSeek AI R1推理大模型API集成文档 引言 随着自然语言处理技术的飞速发展,大语言模型在各行各业的应用日益广泛。DeepSeek R1作为一款高性能、开源的大语言模型,凭借其强大的文本生成能力、高效的推理性能和灵活的接口设计,吸引了大量开发…

活泼瘤胃球菌(Ruminococcus gnavus)——多种疾病风险的潜在标志物

​ 前几日,南方医科大学深圳医院院长周宏伟教授团队在国际顶尖医学期刊《Nature Medicine》上发表了一项重要研究。首次揭示一种名为活泼瘤胃球菌(Ruminococcus gnavus)的细菌产生的物质——苯乙胺,在肝性脑病发生中的关键作用。 ​ 同时谷禾的人群检测数…

8.flask+websocket

http是短连接,无状态的。 websocket是长连接,有状态的。 flask中使用websocket from flask import Flask, request import asyncio import json import time import websockets from threading import Thread from urllib.parse import urlparse, pars…

qiime2:安装与使用

试一下docker安装 docker pull quay.io/qiime2/amplicon:2024.10 docker images docker run -v {挂载的目录}:/data quay.io/qiime2/amplicon:2024.10 qiime -h使用 import.txt docker run -v ~/diarrhoea/MJ/qingzhu:/data quay.io/qiime2/amplicon:2024.10 qiime tools imp…

技术实战|ELF 2学习板本地部署DeepSeek-R1大模型的完整指南(一)

DeepSeek作为国产AI大数据模型的代表,凭借其卓越的推理能力和高效的文本生成技术,在全球人工智能领域引发广泛关注。DeepSeek-R1作为该系列最新迭代版本,实现了长文本处理效能跃迁、多模态扩展规划、嵌入式适配等技术维度的突破。 RK3588作为…

DeepSeek本地部署_桌面版AnythingLLM本地知识库搭建

一.DeepSeek本地部署 1.下载并安装:ollama Download Ollama on macOSDownload Ollama for macOShttps://ollama.com/download 安装是否成功确认,管理员权限运行PowerShell: ollama -h 2.下载安装DeepSeek 管理员方式运行PowerShell&#…

BGP基础协议详解

BGP基础协议详解 一、BGP在企业中的应用二、BGP概述2.1 BGP的特点2.2 基本配置演示2.3 抓包观察2.4 BGP的特征三、BGP对等体关系四、bgp报文4.1 BGP五种报文类型(重点)4.2 BGP报文格式-报文头格式4.3 Open报文格式4.4 Update报文格式4.5 Notification报文格式4.6 Route-refre…

2025.2.10 每日学习记录3:技术报告只差相关工作+补实验

0.近期主任务线 1.完成小论文准备 目标是3月份完成实验点1的全部实验和论文。 2.准备教资笔试 打算留个十多天左右,一次性备考笔试的三个科目 1.实习申请技术准备:微调、Agent、RAG 据央视财经,数据显示,截至2024年12月…

算法 ST表

目录 前言 一,暴力法 二,打表法 三,ST表 四,ST表的代码实现 总结 前言 ST表的主要作用是在一个区间里面寻找最大值,具有快速查找的功能,此表有些难,读者可以借助我的文章和网上的课程结…

25考研材料复试面试常见核心问题真题汇总,材料考研复试面试有哪些经典问题?材料考研复试过程最看重什么内容?

材料复试面试难!千万不要死磕!复试是有技巧的! 是不是刷了三天三夜经验贴,还是不知道材料复试会问啥?去年我复试时被导师连环追问"非晶合金的原子扩散机制",差点当场宕机...今天学姐掏心窝总结&…

Docker Compose介绍及安装使用MongoDB数据库详解

在现代容器化应用部署中,Docker Compose是一种非常实用的工具,它允许我们通过一个docker-compose.yml文件来定义和运行多容器应用程序。然而,除了Docker之外,Podman也提供了类似的工具——Podman Compose,它允许我们在…

netcore openTelemetry+prometheus+grafana

一、netcore项目 二、openTelemetry 三、prometheus 四、grafana添加Dashborad aspire/src/Grafana/dashboards at main dotnet/aspire GitHub 导入:aspnetcore.json和aspnetcore-endpoint.json 效果:

团结引擎“虚拟阴影贴图”能力解析

在团结引擎 1.4.0 版本中,我们发布了重磅功能:虚拟阴影贴图(Virtual Shadow Maps,VSM),全面升级开发体验,为开发者提供更加逼真的光影效果。 虚拟阴影贴图介绍 虚拟阴影贴图(Virtua…