不知其来源出处,感觉是一字一字码出来的经验之谈,特分享与此。

  • 分层案例

1.电信通讯

stage层 ->bdl层 ->analysis层
2.传统金融/保险
ods层 ->pdm层 ->dm层
3.互联网金融/电商
odl层 ->bdl层 ->idl层 ->adl层
尽管行业不同,但套路却差不多。

  • 专业术语

ODL层 (Operational Data Layer):操作数据层
外部数据什么样,该层数据就是什么样(关系型数据库、JSON格式等)
部分关系型数据可以直接转IDL层
BDL层 (Base Data Layer):基础数据层
ODL层经过简单格式化解析后存储到BDL层,常见于JSON日志格式的解析。
IDL层 (Interface Data Layer):接口层,也称主题表,宽表
由BDL层经过去重、去噪、字典翻译、空值转化,日期格式化、关联JOIN、维度分析等清洗后的数据
如:用户、产品、绑卡、订单、用户行为等明细数据。
ADL层(Application Data Layer):应用层 ,也称数据集市
通常与需求对接,由IDL层基于某些维度的深度加工统计汇总等操作转化而来,涉及到多个主题以及tmp数据之间的关联JOIN后的结果。
DIC层(Dictionary Data Layer):字典层
存储一些诸如省、市、县区域表、渠道列表、商品类目等等表数据,可以从数据源直接sqoop生成dic_xxx表,也可以通过odl层转化层dic_表。
TMP层(Temporary Data Layer):临时层
存储一些中间计算结果

  • 简要说明

层次间的转换没必要循规蹈矩,按部就班,适当做到灵活,避免重复清洗浪费资源;

ODL层干净的关系型数据可以直接转换为IDL层数据,减少计算量;
ODL层侧重与外部对接,BDL层/TMP层/IDL层侧重清洗,IDL层和ADL层侧重对外提供应用服务;
层数太少不够灵活,太多则在数据推翻重洗耗时,增加时间成本;
数据源提供的数据越详细越好,避免后期大量重复的清洗工作。

  • “星型模型”和“雪花模型”之不同:

(1)星型模型:事实表+维度表(区域、类目、性别...)等多表通过预先JOIN冗余到一张宽表里去,常见IDL层。
(2)雪花模型:在计算的时候,才将事实表跟维度表做join。
现在一般都是采用(1)的模式,为什么呢? 预先计算,挺高性能,避免后续重复计算。CPU和内存的资源永远比磁盘空间宝贵的多。至于(2)的方式,有点就是灵活,不需要太多的重复清洗,但是性能不如(1)。

  • 表命名规范

ODL层:表名前缀 odl_
BDL层:表名前缀 bdl_
IDL层:表名前缀 idl_
ADL层:表名前缀 adl_
特别的
TMP表:表名前缀 tmp_ ,用于存储中间计算、临时的数据,配合前面4层计算
DIC表:表名前缀 dic_ ,用于存储变化不大的字典信息,如省份城市、区域、类目等数据。

  • 清洗使用Hive,查询借助Impala

Impala查询的速度,是Hive的几十倍,一般1~5秒内可以解决。
Impala不适合清洗,因为语法跟hive还是有很大一部分差异的,Impala比较耗内存;一般商业智能分析工具如tableau、帆软获取其它的都支持Impala。

  • 另其他方案分享:

数仓分层模型架构分享(2)相关推荐

  1. 数仓分层模型架构分享(3)

    文章在京东系数据仓库建设方案的基础上,加上自己独特的理解,很能给人以参考和启发. 原作者:hxiao1317098 原文:https://blog.csdn.net/hxiao1317098/arti ...

  2. 数据仓库(6)数仓分层设计架构

      目前主流的数据仓库分层大多为四层,也有五层的架构,这里介绍基本的四层架构. 分别为数据贴源层(ods).数据仓库明细层(dw).多维明细层(dws)和数据集市层(dm).   下面是架构图:    ...

  3. 谈笑间学会数仓-分层架构

    1.数据仓库 1-1.什么是数仓呢? ​ 数据仓库(Data Warehouse)简称DW或DWH,是数据库的一种概念上的升级,可以说是为满足新需求设计的一种新数据库,而这个数据库是需容纳更多的数据, ...

  4. 数仓建模的edw_浅谈数仓分层和模型

    数仓分层 ODS层基础层-ODS(Operational Data Store-操作型数据存储):主要是未经过加⼯的原始数据 中间层-CDM\EDW(Enterprise Data Warehouse ...

  5. 【博学谷学习记录】超强总结,用心分享|大数据之数仓分层

    数仓是什么? 数据仓库,简称数仓,英文名称为Data Warehouse,可简写为DW或DWH.数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合.它是单个数据存储,出于分析性报 ...

  6. 万字详解数仓分层设计架构 ODS-DWD-DWS-ADS

    一.数仓建模的意义,为什么要对数据仓库分层? 只有数据模型将数据有序的组织和存储起来之后,大数据才能得到高性能.低成本.高效率.高质量的使用. 1.分层意义 1)清晰数据结构:每一个数据分层都有它的作 ...

  7. 数据仓库实战(一):数仓分层分域规范

    笔者多年身处一线互联网独角兽企业,主导过数据仓库从0到1的建设,同时作为数据中台核心成员,在巨头合并,大数据融合及迁移过程中起到至关重要的作用.对数据中台及数据中泰产品有一定研究,抱着分享与自我成长的 ...

  8. 数仓分层(ODS、DWD、DWS、DWT、ADS)和数仓建模

    文章目录 一.数仓分层 数仓概念 ODS(原始数据层)做了哪些事 DWD(明细数据层)做了哪些事 DWS(服务数据层)做了哪些事 DWT(主题数据层)做了哪些事 ADS(应用数据层)做了哪些事 二.数 ...

  9. 数仓分层的意义及通用设计

    文章目录 为什么要设计数据分层 数仓分层的意义 通用的数仓分层设计 总结 为什么要设计数据分层 大多数情况下,我们完成的数据体系依赖复杂.层级混乱,在不知不觉中,容易出现循环依赖体系.因此,我们需要设 ...

最新文章

  1. opengl绘制长方体线框_OpenGL 绘制长方体 计算机图形学
  2. Selenium Webdriver元素定位的八种常用方式
  3. BSP application view instance lifetime analysis
  4. 在JavaScript中反转字符串的三种方法
  5. R语言及参考答案(4)
  6. 基于JAVA+SpringMVC+MYSQL的人事管理系统
  7. java 循环写法_java的for循环的几种写法
  8. Unity3D学习笔记(二十七):MVC框架下的背包系统(2)
  9. java基础习题_JAVA基础练习题
  10. c语言题目tcl是什么意思,TCL语言简述
  11. knowledge transfer
  12. 2019 年终总结,168 篇,已归类!
  13. Android安卓原生接支付宝SDK支付客户端
  14. c51单片机时钟c语言程序设计,51单片机C编程(六、定时器时钟显示时分秒)
  15. Cairo学习(一)
  16. String的一些方法
  17. 我的世界java版是免费,我的世界Java版
  18. Web应用——驾培管理系统之登录功能(作者:小圣)
  19. CSP-J2021原题目及答案
  20. 064:vue+openlayers根据坐标来显示点、线段、圆形、多边形(代码示例)

热门文章

  1. 【香水】区分迪奥小姐Miss Dior中样式相似的几款香水
  2. pycharm库的下载和常见错误
  3. python修改散点图中点的颜色_更改matplotlib中散点图点的颜色
  4. 强烈推荐,建议收藏,Java经典书籍汇总!分享Java那些口口相传的好书籍
  5. linux装百度网盘不能运行,在Deepin系统中安装百度网盘的两种方法
  6. 离散实验sdut3805双射
  7. Oracle官网登录账号
  8. 关于numpy.take()用法
  9. ubuntu ceres-solver 安装
  10. 36岁,被单位解聘,我干起了深夜外卖