数据仓库模型报表设计
夫道、德、仁、义、礼,五者一体也。
——黄石公《素书·第一章·原始》
文章目录
- 前言
- 一、ODS接入
- 二、DIM设计
- 三、DWD设计
- 四、DWS设计
- 五、ADS设计
- 总结
前言
记录数据仓库模型报表设计过程中遇到的坑及其设计可以遵循的规则。持续更新中。
一、ODS接入
ods接入时不做过多的处理,可以选择直接贴源或者做一些普遍存在的问题处理(比如空值的展示样式统一,关系型数据库中字符串数据类型直接使用sqoop接入时会变成null,可以加参数统一空值)。
详细可参考本人博文:Sqoop接入数据时统一空值
二、DIM设计
- 维度表需要注意的是必须保证一个分区内每条数据唯一,避免和事实表关联时一对多产生笛卡尔积。
- 一般可以直接将维度表设计成扁平化,这样关联主键可以带出多个维度,使用起来方便(比如物料维度表,包含物料名称,物料多级分类,物料属性等等)。
- 维度表设计时不用过多考虑现有需求,可以将有用的维度都拿进来。
详细可参考本人博文:维度建模之维度表的设计经验分享
三、DWD设计
- 尽可能地细粒度,保证下游下钻的可能(比如订单事务事实表可以把粒度定为订单行粒度)。
- 标准的事实表是不含有具体维度字段,而是有很多维度外键以便其下游关联维度,但实际工作中,因为存储成本较低,会把很多维度字段也冗余到事实表里,让表更加简单易懂,有时也会把一些复用率很低的维度直接退化到事实表中,不独立成维度表。
- 尽量都先建事务事实表,本人目前所在的公司使用很多saas系统,数据库没有在自己公司手里,都在saas的云端,接入数据时使用接口接入,这场景和传统数仓直接从业务数据库接入数据很不一样,因为金蝶接口并没有类似数据更新时间(当一条数据更新时更新日期字段不一定会记录当时日期,甚至表行数据改变时表头的更新日期字段也并不一定跟随一起更新,这非常非常不友好!!!)和数据删除标志这样的字段,这造成无法直接按数据更新时间增量接入数据,只能一次取一段时间的数据,后续建模时按时间排序取最新,形成快照表。
- 事实表设计时也不用过多考虑现有需求,应该从具体的业务流程入手,将整个业务流程构建成事实表。
详细可参考本人博文:维度建模之事实表的设计经验分享
四、DWS设计
- dws表可以做成宽表,实现下游复用。
- 通常从dws表开始直接服务于分析,大部分由分析师使用,设计时要从需求出发(比如dws包含公司所有部门的销售数据,其下游ads再分部门汇总数据,类似这样来实现复用)。
详细可参考本人博文:维度建模之汇总分析表的设计经验分享
五、ADS设计
ads的设计需要结合报表的展示样式考虑。
详细可参考本人博文:维度建模之应用层报表设计经验分享
总结
夫道、德、仁、义、礼,五者一体也。出自汉代黄石公的《素书》,意为道、德、仁、义、礼五位一体,密不可分。
数据仓库分层亦是如此,ODS、DIM、DWD、DWS、ADS各司其职,有不同的侧重点,如果按各自的规则特点去设计,会起到事半功倍的效果,整体形成更加实用的架构。
数据仓库模型报表设计相关推荐
- NC语义模型和报表设计及报表的发布
打开语义模型节点,预置的是系统自带的,不建议新增和修改 选择对应分类,新增一个语义模型 新增完成后点击设计 语义模型可以选择元定义和语义脚本两种方式 原定义通过搜索表名直接添加 语义脚本就是编写sql ...
- 数据仓库-数据仓库的简介(由来、与关系数据库的区别、数据仓库模型)
数据仓库的基本概念 数据仓库泛化.合并多维空间的数据.构造数据仓库涉及数据清理.数据集成和数据变换,可以看做数据挖掘的一个重要预处理步骤.此外,数据仓库提供联机分析处理(OLAP)工具,用于各种粒度的 ...
- SAP CRM系统订单模型的设计与实现
SAP成都研究院的一个部门领导让我给他的团队做一个SAP CRM One Order框架的培训,这是我准备的培训内容. 在Jerry之前的文章 基于SAP Kyma的订单编排增强介绍,我表达了自己对S ...
- SAP CRM系统订单模型的设计与实现 1
SAP成都研究院的一个部门领导让我给他的团队做一个SAP CRM One Order框架的培训,这是我准备的培训内容. 在Jerry之前的文章 基于SAP Kyma的订单编排增强介绍,我表达了自己对S ...
- 一种经典的客户关系管理系统(CRM)订单模型的设计与实现
笔者在 SAP 领域工作多年,对 SAP 应用的理解就是:模型以及基于模型的增删改查. 只是同我们大学专业课学习时完成的家庭作业相比,SAP 模型的复杂程度增加了好几个数量级. 和传统的增删改查相比, ...
- 关于【你们数据仓库是怎么设计的】如何回答?
你们数据仓库都是怎么设计的,数据怎么抽象? 关于这个问题,我说一说我的想法,不一定是正确的,但希望能给你提供一些思路 1.数据仓库是怎么设计的? 如果真的要完全回答这个问题,真的太大了. 另外我觉得, ...
- 数据仓库模型篇-点外卖
目录 点外卖引发的思考 背景 First Blood double kill Triple kill 为什么要模型 建模方法论哪家强 Inmon Kimball 总结 点外卖引发的思考 背景 作为一名 ...
- [财务][数据化分析][帆软]报表设计-模板设计类型
1. 描述 模板设计是 FineReport 学习过程中的主要难题所在,FineReport 模板设计主要包括普通模板设计.决策报表设计和聚合报表设计三种模板设计类型. FineReport 三种设计 ...
- mysql web 报表工具_.net的web报表设计工具
e表介绍 e表是一个功能强大的Web报表工具,提供了高效的报表设计方案.强大的Web报表展现能力.灵活的部署机制.使用e表可使复杂报表的设计简单化,以往难以实现的报表可以轻松实现,避免了大量的复杂SQ ...
最新文章
- saltstack 服务配置
- # LeetCode集锦(四) - 第13题 Roman To Integer
- 从方法论到零售客户实践 解码阿里巴巴数据中台——2018上海云栖大会
- c#实现多线程代码例子
- SparkSQL之DataFrame案例
- 用c语言get统计字母个数,请问这个用c怎么做:输入一串字符,分别统计其中数字和字母的个数...
- wps表格里面计算机在哪里,WPS的Word居然还有计算神器?在哪里能找到又是怎么进行计算呢?...
- linux系统rc路由配置_详解CentOS 6.4 添加永久静态路由所有方法汇总
- Exploration(POJ-3618)
- Spring容器创建流程(8)初始化bean
- 构建入门Restful Web服务
- [POI2013]LUK-Triumphal arch
- 如何在PowerPoint中将自定义模板设置为默认模板
- 使用Vue3实现360度全景效果
- MSP430单片机原理及应用 实验
- 两个小时倒计时计时器
- P4 开发实践 — 编程基础
- 1.#_3 Typora(markdown格式文本编辑器) -- 配置高亮及快捷键
- 汇总解决idea出现import包时报错Java:程序包xxxx不存在,但包确实存在的问题
- Coda 2.7.7 强大的Web编辑器