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

数据仓库学习笔记

 

1、基于RDBMS的数据仓库实现:数据仓库的设计也可以理解为面向OLAP的数据库设计。数据仓库的设计模式分为星型结构、雪花结构(1个维度表向外连接子维表)、星座结构(1个维度被多个事实表使用)。在星型模型中主要数据存储在事实表中,没有冗余,并符合3NF

2、除了对应到维度的外码和度量属性,事实表中还常常考虑另外两个属性:事务标识码(transaction identifier)和事务时间(transaction time)。

        事务标识码通常被命名为TID,其意义就是各种订单号,事务编号...... 为什么将这个属性放到事实表而不是维表中呢?一个主要原因是它的数量级太大了,这样每次查询都会耗费很多资源来Join。这种将某些逻辑意义上的维度放到事实表里的做法被称为退化维度(degenerate dimension)。

        将事务时间维度放到事实表中的考虑也是出于相同考虑。然而这么设计又一次"逆规范化"了:事务标识码非主码却决定事务标识时间,显然违背了3NF。但现在我们是为数据仓库建模,所以这样做是OK的。另外在分布式的数据仓库中,这个字段十分重要。因为事实表的数量级非常大,Hive或者Spark SQL这类分布式数据仓库工具都会对这些数据进行分区。任何成熟的分布式计算平台中都应禁止开发人员建立非分区事实表,并默认分区字段为(当天)日期。

3、细节事实表(detailed fact tables)中每条记录表示单一事实,而聚集事实表(aggregated fact tables)中每条记录则聚合了多条事实。从表的字段上看,细节事实表通常有设置TID属性,而聚集事实表则无。

        两种事实表各有优缺点,细节事实表查询灵活但是响应速度相对慢,而聚集事实表虽然提高了查询速度,但使查询功能受到一定限制。一个常见的做法是使用星座模型同时设置两种事实表(可含多个聚集事实表)。这种设计方法中,聚集事实表使用和细节事实表细节事实表的维度。

4、比较经典的数据仓库设计解释:https://blog.csdn.net/lzlchangqi/article/details/52841429

5、数据仓库建模是一个综合性技术,需要使用到ER建模、关系建模、维度建模等技术而且当企业业务复杂的时候,这部分工作更是需要专门团队与业务方共同合作来完成。因此一个优秀的数据仓库建模团队既要有坚实的数据仓库建模技术,还要有对现实业务清晰、透彻的理解。

6、维度表:分三类,固定维度,渐变维度(SCD:Slowly Changing Dimension),和快变维度。

  渐变维度解决数据缓慢变化的问题,学习资料:https://ask.hellobi.com/blog/biwork/974

       https://blog.csdn.net/xiaoxu0123/article/details/5417894

    维度层次:维度的层次分为完全层次和不完全层次两种。日期维度就是完全层次,日-月-年 。所谓不完全层次就是有层些层次会断层,这个时候维度上卷时就是空的,所以这个时候的解决方案就是断层维度自动填充下级维度的值,也就是说下级维度上卷时卷到的是它自己。  比如 日-月-推广期-年 这个层次维度,一个推广期可有有多个月份,也有可能某个月份没有推广期,这个时候,没有推广期的月份的 推广期这个层次的值就填成月份的值。

商品时间销量
A20175000
A春季推广期3000
A3月1000
A4月2000
A8月2000
A8月2000

 7、数据仓库深入学习笔记:https://blog.csdn.net/wzy0623/article/list/17

相关文章:

  • windows设置防火墙允许telnet
  • Hexo添加评论、阅读次数和分类/标签
  • 颜色的生成
  • 360首曝人工智能研发三大神秘成果
  • ThinkSNS+ 移动端1.8.2.0704 版本更新简要说明
  • js蛋疼的Class(获取class对象)
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • 大数据教程(2.5):Linux系统搭建本地YUM源服务器
  • 每天学点SpringCloud(一):使用SpringBoot2.0.3整合SpringCloud
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • Vuejs响应式原理
  • SQL注入1——bugku
  • PS常识及技巧
  • 微擎用户账号加密方式
  • 新手应该如何学习python
  • JS 中的深拷贝与浅拷贝
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • CEF与代理
  • css选择器
  • mockjs让前端开发独立于后端
  • PAT A1050
  • python 学习笔记 - Queue Pipes,进程间通讯
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • Vue.js-Day01
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • webpack+react项目初体验——记录我的webpack环境配置
  • 从伪并行的 Python 多线程说起
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 提醒我喝水chrome插件开发指南
  • 微信支付JSAPI,实测!终极方案
  • 湖北分布式智能数据采集方法有哪些?
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • ​马来语翻译中文去哪比较好?
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #WEB前端(HTML属性)
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • (0)Nginx 功能特性
  • (3)STL算法之搜索
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (八十八)VFL语言初步 - 实现布局
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (顺序)容器的好伴侣 --- 容器适配器
  • (转)拼包函数及网络封包的异常处理(含代码)
  • *1 计算机基础和操作系统基础及几大协议
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • []Telit UC864E 拨号上网
  • [1159]adb判断手机屏幕状态并点亮屏幕
  • [AUTOSAR][诊断管理][ECU][$37] 请求退出传输。终止数据传输的(上传/下载)
  • [BZOJ] 1001: [BeiJing2006]狼抓兔子