费元星-关于百度在数据仓库-层级架构上的思考

目前在做的数据产品都是基于数据仓库上实现,主要的应用方式包括固定报表、数据查询、数据挖掘等。

在知识类相关的数据分析产品中,通常需要对多个业务系统的数据进行集成,更需要对数据分层进行科学的规划。

为什么分层

我们对数据进行分层的一个主要原因就是希望在管理数据的时候,能对数据有一个更加清晰的掌控,详细来讲,主要有下面几个原因:

  1. 清晰数据结构:每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解;
  2. 数据血缘追踪:简单来讲可以这样理解,我们最终给业务诚信的是一能直接使用的张业务表,但是它的来源有很多,如果有一张来源表出问题了,我们希望能够快速准确地定位到问题,并清楚它的危害范围;
  3. 减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算;
  4. 把复杂问题简单化:讲一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复;
  5. 屏蔽原始数据的异常;
  6. 屏蔽业务的影响:不必改一次业务就需要重新接入数据。

数据体系中的各个表的依赖就像是电线的流向一样,我们都希望它是很规整,便于管理的。

怎么分层

大部分数据处理都是基于百度的分层思想来做,可以把数据仓库分为下面三个层,即:数据运营层、数据仓库层和数据产品层,但通常在数据仓库实践中,这种简单的分层模式会导致数据仓库层承担过多的功能,比如明细数据和汇总数据分层不明确等。优化后的数据分层如下:

  • 数据接口层 Reduced                 --  通常在UDA系统中进行灵活配置,不需要任何coding即可将数据入库,并可以做简单的处理。
  • 近源数据层 ODS
  • 明细数据仓库层 DWD
  • 轻度汇总数据仓库层 DWG
  • 数据应用层 (根据具体的应用形式命名,比如报表 CPT,关键指标 KPI)
  • 中间数据层 TMP

Reduced 层

INF, 即接口数据层,主要来源主要为数据库和文件。数据结构和数据源基本相同,为了方便后续历史数据处理,需添加以下字段:

  • dw_created_time

该记录生成的时间。

  • dw_updated_time

该记录更新的时间,默认与 dw_created_time ,数据发生更新时更新。

  • dw_deleted_time

dw 中该记录删除的时间,默认值为 9999-12-31。

  • src_updated_time

源数据中的更新时间戳。

我们对接口层的定义是把源系统的数据拉取到数据仓库中,而这个步骤可能由非技术人员来完成,所以尽可能简单,不对数据进行过多修改。

接口层中所有表以 INF_ 为前缀,其中字典表以 INF_DICT_为前缀。

ODS 层

近源数据层主要完成以下工作:

  • 根据数据的量级选择分区键对数据进行分区
  • 对缓慢变化维进行处理,反应变化

近源数据层不做以下事情:

  • 脏数据处理;
  • 数据表间一致性处理;
  • 不同业务表的合并.

我们对于近源数据层的定位是可以"快速"的构建基础数据平台. 不做业务相关的处理可以让这部分的工作专注在大数据架构正确性和稳定性的问题.

DWD 层

数据仓库明细层,由 ODS 层经过去重、去噪、字典翻译、空值转化,日期格式化、关联JOIN、维度分析等清洗后的数据,主要包括两种形式,数据宽表和维度模型(星型模型)。

它的定位是"操作简单, 执行快速, 屏蔽错误, 统一口径".

这个过程主要完成如下几个事情:

  • 合并不同业务为统一过程;
  • 屏蔽脏数据, 比如典型的测试数据.
  • 冗余字段. 把常用的join操作在宽表中封装.

数据宽表以DW_为前缀;事实表以DW_FACT_为前缀;维度表以DW_DIM_为前缀。

通常优先考虑使用数据宽表实现,在灵活性要求比较高或有特殊要求的情况下采用维度模型实现。

DWG 层

数据仓库轻度汇总层,对明细层的数据根据年、月、日等维度对数据进行轻度汇总。

轻度汇总层的表名以 DWG_ 为前缀。

应用层

应用指标层 KPI

应用指标层,针对常用的 KPI 指标项进行计算。

应用报表层 CPT

专用于报表应用,一般适用于计算比较复杂的报表应用(如跨数据集计算等)。

原文地址:https://www.cnblogs.com/feiyuanxing/p/10777556.html

时间: 2024-10-11 03:50:43

费元星-关于百度在数据仓库-层级架构上的思考的相关文章

【原创】linux命令-Axel命令 - linux多线程下载 - 费元星 - 未来星开发团队

[费元星版权Q:9715234] Axel 是 Linux 下一个不错的HTTP/FTP高速下载工具.支持多线程下载.断点续[费元星版权Q:9715234]传,且可以从多个地址或者从一个地址的多个连接来下载同一个文件.适合网速不给力时多线程下载提高下载速度.在百度服务器上用20个线程跑,速度是, ,已经达到宽带的房顶!比wget快的超级多! 大家感觉一下 CentOS安装Axel: 目前yum源上没有Axel,我[费元星版权Q:9715234]们可以到http://pkgs.repoforge.

MyEclipse10安装checkStyle与findBugs插件--详细完美结局-费元星

本人QQ:971751392(屌丝一枚) Myeclipse10安装checkStyle与findBugs插件详细完美结局方案: 资源一: http://download.csdn.net/detail/oceans521/8202353  CSDN资源 资源二:如果上面不能访问,则访问官网,如下 http://findbugs.sourceforge.net/downloads.html findBugs: 原创版权:QQ971751392 (费元星) 1.将下载回来的zip包解压,得到文件夹

【Linux搭建创建FTP服务器】---完美解决 - 费元星

配置大红字文件置顶: vsftp d.conf 4.5KB useradd -d /home/bai_du -s /sbin/nologin bai_du 修改访问权限: usermod -d /home/webroot/fourcar.diliulian.com/ -s /sbin/nologin fourcar 在创建FTP服务器之有先命令: ps -ef |grep vsftpd 费元星版权Q[9715234] 查一下系统有没有安装vsftpd这个服务器,如果出现如下图所示的界面说明没有安

三张照片解决--win10系统的edge浏览器设置为浏览器IE8,IE7,IE9---完美解决 费元星

主要思想: 第二种方法: 参考文档: 1.可以在系统盘的C:\Program Files\Internet Explorer中找到iexplore.exe,然后将其发送到桌面快捷方式即     可,其就是ie浏览器.2.如果你在刚才的目录中没有找到iexplore.exe,则有可能是因为你得服务没有打开,然后你就要在 控制面板\程     序/启动或关闭windows功能,在其中找到ie11,点击勾选上,然后重启电脑即可.在Win8.1的IE11环境里面,不少网站即使通过兼容视图也无法正常显示,

RabbitMQ ddemo 费元星

http://blog.csdn.net/lmj623565791/article/details/37607165 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37607165 本系列教程主要来自于官网入门教程的翻译,然后自己进行了部分的修改与实验,内容仅供参考. “Hello world” of RabbitMQ 1.Windows下RabbitMQ的安装 下载Erlang,地址:http://www.erlang.or

Myeclipse10安装git 完美解决-费元星

1. 拥有自己的github版本库 这年头,不在GitHub上弄几个项目都不好意思跟人家打招呼. 首先,进入GitHub注册账号,话说人家这页面做的那叫一个舒服啊. 然后,登陆并创建自己的版本库(Repository)吧,点击页面右上角的小加号选择“New repository”. 依次填写库的名字.描述.开放库(Private是要收费的哟),选择编程语言或技术门类(我是Java),OK,创建. 2. 安装egit 我使用的是MyEclipse for spring 10.6,根据各版本ecli

超过宽度和高度文字会自动隐藏 --费元星

页面中table宽度设置width="600px"之后,宽度仍然不是固定的,文字太长后不换行,把table都撑变形了. 解决办法: 1.table 设置 宽度,绝对宽度和相对都可以 table-layout:fixed ; 设置了这个属性,其余所有td都是相同的宽度. 这样操作之后,table是宽度固定了,但是里面的文章如果很长,文字会覆盖 解决办法: 在 td 里面 加上 style="word-wrap:break-word;" 自动换行就好了,如果不想换行,可

solr 常见的问题整理 -费元星

本文是我在开发过程中遇到的一些问题的整理,有些摘自网上别人的方法. 1. org.apache.solr.client.solrj.SolrServerException: Timeout occured while waiting response from server at: http://localhost/solr请求超时 解决方法:设置setConnectionTimeout和setSoTimeout为1分钟 2. org.apache.solr.common.SolrExcepti

table调整td宽度整理-完美解决--费元星前端

个人整理例子,留下做个备份 最终重要的几句话 1.限制td宽度 <colgroup> <col width="27%"/><!-- 海关代码 --> <col width="22%" /><!-- 海关名称 --> <col width="22%" /> <col width="20%" /> <col /> </colgro