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

数仓-可累计,半累加,不可累加指标,是什么,举例说明及解决方案

目录

      • 1. 可累计指标
        • 定义:
        • 举例:
        • 解决方案:
      • 2. 半累加指标
        • 定义:
        • 举例:
        • 解决方案:
      • 3. 不可累加指标
        • 定义:
        • 举例:
        • 解决方案:
      • 4. 总结对比
      • 5. 实际场景中的注意事项

这是数据仓库设计中的一个重要概念,涉及指标的分类和处理方式。指标可以根据其 是否可以进行累加(即是否可以直接通过加总计算出结果)分为 可累计指标半累加指标不可累加指标。以下是详细的定义、举例和解决方案。

1. 可累计指标

定义:

可累计指标指的是可以直接通过加总计算出结果的指标,通常是具有加法性质的数据。这类指标在时间、维度或其他粒度上都可以直接累加。

举例:
  • 销售额:某天的销售额可以直接累加到某月的销售额。
  • 订单数量:某地区的订单数量可以累加到全国的订单数量。
  • 访问次数:某用户的访问次数可以累加到所有用户的访问次数。
解决方案:
  • 存储方式直接存储原始数据,按时间或维度进行汇总。
  • 查询方式:使用SUM()函数即可实现累加。
  • 示例
    SELECT SUM(sales_amount) AS total_sales
    FROM sales_fact
    WHERE sales_date BETWEEN '2025-05-01' AND '2025-05-31';
    

2. 半累加指标

定义:

半累加指标指的是在某些维度上可以累加,但在其他维度上无法直接累加的指标。这类指标通常需要额外的计算逻辑来支持累加。

举例:
  • 库存量:可以按时间累加(某时间点的库存量),但不能直接累加不同产品的库存量。
  • 账户余额:可以按时间查看余额变化,但不能直接累加多个账户的余额。
  • 快递在途件数:可以按时间分析变化,但不能累加不同快递公司的在途件数。
解决方案:
  • 存储方式
    • 存储快照数据(即某个时间点的状态)。
    • 存储变动数据(如库存的增减记录)。
  • 查询方式
    • 快照数据:直接查询某时间点的值。
    • 变动数据:通过累计增量计算某时间点的值。
  • 示例
    • 查询某时间点的库存量:
      SELECT product_id, inventory_amount
      FROM inventory_snapshot
      WHERE snapshot_date = '2025-05-31';
      
    • 通过增量计算库存量:
      SELECT product_id, SUM(change_amount) AS current_inventory
      FROM inventory_changes
      WHERE change_date <= '2025-05-31'
      GROUP BY product_id;
      

3. 不可累加指标

定义:

不可累加指标指的是无法直接通过加总计算出结果的指标。这类指标通常涉及平均值、比例、排名等复杂计算。

举例:
  • 平均单价:不能直接累加所有单价,需要通过加权平均计算。
  • 转化率:不能直接累加各个维度的转化率,需要重新计算总的转化率。
  • 客户满意度评分:不能直接累加,需要通过统计分析计算平均值或中位数。
  • 排名:排名无法累加,需要重新计算。
解决方案:
  • 存储方式
    • 存储原始数据(如单价、转化率的分子和分母)
    • 存储中间结果(如加权平均的权重)。
  • 查询方式
    • 平均值:通过加权平均计算。
    • 转化率:通过重新计算分子和分母的总和。
  • 示例
    • 计算平均单价:
      SELECT SUM(sales_amount) / SUM(quantity) AS avg_price
      FROM sales_fact
      WHERE sales_date BETWEEN '2025-05-01' AND '2025-05-31';
      
    • 计算转化率:
      SELECT SUM(conversions) * 1.0 / SUM(visits) AS conversion_rate
      FROM website_metrics
      WHERE metric_date BETWEEN '2025-05-01' AND '2025-05-31';
      

4. 总结对比

指标类型定义举例解决方案
可累计指标可直接累加销售额、订单数量、访问次数存储原始数据,直接使用SUM()累加
半累加指标某些维度可累加,其他维度不可累加库存量、账户余额、在途件数存储快照或增量数据,根据时间点计算
不可累加指标无法直接累加,需要重新计算平均单价、转化率、排名存储原始数据或中间结果,使用加权平均或重新计算

5. 实际场景中的注意事项

  1. 数据存储设计

    • 对于可累计指标,直接存储即可。
    • 对于半累加指标,存储快照数据或增量数据,方便后续计算。
    • 对于不可累加指标,存储原始数据或分子/分母,避免丢失计算依据。
  2. 查询性能优化

    • 可累计指标查询简单,性能较高。
    • 半累加和不可累加指标查询复杂,可能需要索引或分区优化。
  3. 业务需求分析

    • 在设计数据仓库时,需要明确业务对指标的分析需求,选择合适的存储和计算方式。
  4. 时间维度处理

    • 半累加和不可累加指标通常与时间维度密切相关,设计时需考虑时间点或时间段的计算逻辑。
http://www.xdnf.cn/news/5484.html

相关文章:

  • 前端面试题:说说你对 Vue 中异步组件的理解
  • jetson orin nano super AI模型部署之路(十)使用frp配置内网穿透,随时随地ssh到机器
  • 单词怎么记:以use一词为例
  • Java中Comparator排序原理详解
  • 3. 无重复字符的最长子串(滑动窗口)
  • 客户端建立一个连接需要占用客户端的端口吗
  • NHANES稀有指标推荐:HALP score
  • average per-pixel disparity error: EPE及不同距离值下的误差曲线
  • JavaScript基础-全局作用域
  • 《Python星球日记》 第53天:卷积神经网络(CNN)入门
  • DNS服务实验
  • 土耳其Koç大学指令驱动的智能综述,从文本表达到任务执行的系统探索
  • 王慧文产品课总结
  • @Transactional注解失效
  • 仿制药研发为何要上电子实验记录本?
  • 数据在内存中的存储
  • 配置高级相关
  • Open CASCADE学习|B 样条曲线拟合优化
  • 探秘 Canva AI 图像生成器:重塑设计创作新范式
  • vs python“““标记注释报错,vs使用自带环境安装 python第三方库
  • 每日一题洛谷T534125 合数c++
  • C# 方法(ref局部变量和ref返回)
  • 测试一下多模态提取图片中文字的能力
  • STM32F103单片机在不需要使用 JTAG 调试接口的情况下,释放引脚给其他功能使用。
  • 电网拓扑分析:原理与应用
  • Crewai Community Version(四)——Crew
  • Qt QCheckBox 使用
  • 【Java ee初阶】网络编程 TCP
  • 深度学习篇---姿态检测实现
  • 软考错题集