什么是数据聚合?
数据聚合是按照声明的粒度对明细记录分组,并为每个组计算计数、求和、平均值、最小值、最大值或百分位数等汇总指标的过程。输出会用更少的行替代大量原子记录,以支持分析、报告、监控或后续计算。
聚合不只是调用一个函数。每个结果都取决于五项选择:符合条件的记录总体、分组维度、时间或事件窗口、指标公式和输出粒度。“按区域统计月收入”只有在收入、月份边界、区域、退款、币种、重复记录和迟到事件都有明确定义时才有意义。
这个术语有时被宽泛地用于描述从多个来源收集数据。收集可以发生在聚合之前,但决定性操作是汇总。保留每条记录的合并表还不是聚合数据;把记录压缩为明确定义指标的分组结果才是。
为什么聚合数据,何时不应聚合
数据聚合让重复问题更容易回答。仪表板可以读取每日总额,而不必扫描每笔交易;监控系统可以按服务和分钟评估错误率;分析人员可以按群组比较客户行为;财务团队可以按期间核对账户余额。当相同汇总被反复使用时,更小的结果也可能减少查询工作。
问题具有稳定维度和指标,明细记录已经验证,重复汇总具有价值,使用者理解结果粒度。
调查、异常诊断、因果分析、审计、定义变化和记录级操作需要可追溯的原子数据,不能只保留汇总。
不要为了掩盖数据质量问题或单纯减少存储而聚合。汇总可能隐藏重复、异常值、缺失分组或错误连接。每个输出组都应能追溯到规则版本、输入快照和符合条件的记录数量。
定义粒度、维度、指标与范围
最重要的设计决策是粒度,即一行输出代表什么。维度标识分组,指标汇总组内记录,过滤条件和窗口定义哪些记录有资格进入计算。在编写SQL、配置数据透视表或要求分析工具计算之前,先写清这些要素。
| 要素 | 需要回答的问题 | 示例 |
|---|---|---|
| 总体 | 哪些记录有资格进入? | 排除测试账户后的已完成订单行 |
| 粒度 | 一行输出代表什么? | 一个日历日、区域和产品类别 |
| 维度 | 哪些属性定义分组? | 订单日期、区域、类别 |
| 指标 | 每组计算什么? | 订单数、件数、销售额、退款、净销售额 |
| 窗口 | 按什么时间规则归属记录? | 按完成时间划分的UTC日历日 |
| 规则版本 | 哪个定义版本生成结果? | 指标契约v3,并记录生效日期 |
选择正确的数据聚合方法
PostgreSQL文档把聚合函数定义为从一组输入值计算一个结果;GoogleSQL也把聚合描述为把一组行汇总为单个值。函数必须符合业务含义和数据类型。数学上有效的表达式仍可能在分析上错误。
| 方法 | 适用情况 | 注意事项 |
|---|---|---|
| COUNT | 计算符合条件的行或事件 | 重复行、空值行为、事件数与实体数混淆 |
| COUNT DISTINCT | 按稳定键计算唯一实体 | 身份解析、近似算法、空键 |
| SUM | 累加兼容数量 | 币种转换、单位不一致、退款、连接扇出 |
| AVG | 组均值具有有意义的分母 | 平均值再平均、缺少权重、偏斜、空值排除 |
| MIN / MAX | 寻找组边界或最新状态 | 并列、时区、无效异常值、无关伴随列 |
| 百分位数 | 描述分布和尾部行为 | 连续与离散规则、样本量、近似计算 |
| 加权平均 | 子组具有不同分母 | 保留分子与分母,不要盲目平均各组均值 |
可重复的数据聚合流程
- 写出分析问题。说明决策、总体、输出粒度、维度、指标、时间规则、排除项、责任人和刷新需求。
- 分析明细输入。检查键、类型、重复、空值、单位、币种、时区、迟到记录、类别值和更新行为。
- 分组前标准化。应用获准映射,按声明键去重,统一单位与日历,并记录拒绝行,而不是静默丢弃。
- 在最低有用粒度计算。生成可加组件、符合条件行数、唯一键和诊断字段,以支持后续上卷与核对。
- 独立验证。将总额与控制查询或源报告比较,检查样本组,测试空组与边界情况,并验证低层组能正确重组。
- 随结果发布定义。保存粒度、维度、公式、时区、规则版本、刷新时间、输入覆盖、责任人和已知限制。
- 监控并重算。发现迟到数据、源端更正、新类别、Schema变化和漂移;定义哪些窗口可变,以及回填如何替换既有汇总。
数据聚合示例:每日区域销售
以下是假设示例,不是客户案例。某零售商每个订单行一条记录,字段包括订单ID、行ID、完成时间、区域、类别、数量、销售额、折扣、退款、币种和状态。问题是:“各区域与类别每日的净销售额和购买活动如何?”
团队把一行输出定义为一个UTC完成日期、区域和标准产品类别。它排除测试账户和已取消订单行,使用声明的汇率来源与生效日期转换获准币种,按订单行ID去重,通过版本化表映射类别,并在获准窗口内允许迟到完成记录更新结果。
| 指标 | 公式 | 验证 |
|---|---|---|
| 订单数 | 符合条件的唯一订单ID数 | 与独立订单头计数比较 |
| 件数 | 符合条件数量之和 | 将类别与区域总数核对到每日总数 |
| 净销售额 | 转换后销售额减折扣与退款 | 将组件与总体总额同财务控制数比较 |
| 平均订单价值 | 净销售额除以唯一订单数 | 用保留的分子与分母重新计算 |
为什么重要:直接对订单行的订单数求和会重复计算多行订单,而对类别平均值再次取平均会让大小类别权重相同。声明实体键并保留分子与分母可以防止这两类错误。
如何验证聚合数据
在可能情况下,验证应独立于主要聚合。以相同方式重复同一查询可能重现同一错误。应使用源端控制总额、独立查询路径、会计恒等式、抽样分组和重组检查。
- 总体检查:符合、排除和拒绝记录应能解释输入范围;调查无法解释的丢失。
- 唯一性检查:验证每个声明维度组合只有一行输出,并检测重复分组键。
- 可加性检查:低层可加指标应能无重复地重组为预期高层总额。
- 公式检查:用保留组件重算比率与平均值,并测试零分母和空值规则。
- 变化检查:按新增、变化、移除、迟到和重新映射的组比较运行,而不是只看最终总额。
使用InfiniSynapse分析已连接来源
InfiniSynapse官网描述了对受支持数据库的直接连接,以及无需先进行复杂迁移的多源联合分析。当聚合问题可以在获准的已连接数据上回答,并且团队希望在构建新持久汇总前测试定义时,Web App具有相关性。
请准备只读连接信息、允许访问的Schema、实体键、连接关系、过滤条件、时区、分组维度、公式、预期控制总额和隐私边界。使用这些输入提出精确分析问题,并将返回分组与独立证据比较。
不应把InfiniSynapse描述为采集服务、ETL引擎、持久聚合存储、流处理器或计划物化管道。当汇总必须作为生产数据产品持久刷新、分发、版本化或恢复时,应使用专用数据工程系统。
请准备指标契约、分组粒度、只读访问和核对总额。使用InfiniSynapse Web App探索并验证已连接来源的汇总;如果结果需要计划性持久交付,则保留专用管道。
分析获准的已连接数据数据聚合常见问题
什么是数据聚合?
数据聚合按照声明粒度对明细记录分组,并为每组计算计数、求和、平均值、最小值、最大值或百分位数等汇总指标。
数据聚合的例子是什么?
零售商可以按日历日和区域对验证后的订单行分组,再为每组计算订单数、唯一客户数、件数、销售额、折扣、退款和净销售额。
数据聚合与数据集成有何不同?
数据集成跨系统连接、搬运或统一数据;数据聚合把记录汇总为分组结果。聚合可以是集成工作流中的一种转换,但两个术语不能互相替代。
如何验证聚合数据?
应固定输入范围与规则,核对可加总额,将分组计数与独立控制查询比较,检查样本组,测试空值和重复行为,并验证各组能重组为预期的高层总额。
