数据分析学习(二)

"ETL"

Posted by Jht on October 14, 2019

ETL是个啥

ETL是Extraction-Transformation-Loading的缩写,中文名称为数据抽取、转换和加载到数据仓库。 目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。

ETL与数据分析六步曲的对应关系:

  • 数据收集
  • 数据处理

ODS(Operational Data Store)

操作型数据存储是一种数据架构或数据库设计的概念,为企业提供即时的,操作型数据的集合。

人们对数据的处理行为可以划分为操作型数据处理和分析型数据处理,操作型数据处理一般放在传统的数据库(Database,DB)中进行,分析型数据处理则需要在数据仓库(Data Warehouse,DW)中进行。但是并不是所有的数据处理都可以这样划分,换句话说,人们对数据的处理需求并不只有这两类,比如,有些操作型处理并不适合放在传统的数据库上完成,也有些分析型处理不适合在数据仓库中进行。这时候就需要第三种数据存储体系,操作数据存储(Operational Data Store,ODS)系统就因此产生。它的出现,也将DB~DW两层数据架构转变成DB~ODS~DW三层数据架构。

ODS的特性:

  • 面向主题的
    • 进入ODS的数据是来源于各个操作型数据库以及其他外部数据源,数据进入ODS前必须经过 ETL过程。
  • 集成性
    • ODS的数据来源于各个操作型数据库,同时也会在数据清理加工后进行一定程度的综合。
  • 可更新的 -可以联机修改。这一点区别于数据仓库。
  • 当前或接近当前的
    • “当前”是指数据在存取时刻是最新的,“接近当前”是指存取的数据是最近一段时间得到的(1~3个月)

ODS的功能

OLAP和OLTP

数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)

OLAP

OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果,提供对历史数据进行多维度的统计分析。

OLTP

OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,以完成当前小事务处理为目的,例如银行交易系统和网购系统。

区别
区别项 OLTP OLAP
用户 操作人员,一线管理人员 决策人员,高级管理人员
功能 日常操作处理 分析决策
DB设计 面向应用 面向主题
数据 当前的,新的,细节的,二维的,分立的 历史的,聚集的,多维集成的,统一的
存取 读写数十上百条数据 读百万级数据
DB大小 100MB~~GB 100GB~~TB
时间要求 实时性 对时间的要求不严格
主要应用 数据库 数据仓库
实现企业级的OLTP操作:

传统的操作型数据库往往只存放企业某一类业务或者某一个部门的数据,因此无法面向企业全局数据的OLTP,而ODS可以实现。因为ODS的数据是面向整个企业进行集成汇总的,克服了原来面向应用的操作型数据库数据分散的缺陷。

实现即时的OLAP操作:

在数据仓库上进行OALP,往往由于数据量十分庞大而需要较长的时间。而在企业实际应用中,对于一些较低层次的决策,往往并不需要太多的历史数据,可能只需要参考当前的或者接近当前的数据就可以完成,并且要求具有较快的响应时间,因此数据仓库显然无法满足这样的要求,但是ODS可以实现。ODS中不仅有面向企业全局的细节数据和汇总数据,而且规模比数据仓库小,具有较强的实时响应能力。

DW(Data Warehouse)

数据仓库是用于支撑管理决策的数据集合,数据仓库是一种特殊的数据库。

数据仓库的特性:

  • 面向主题
  • 集成性
  • 相对稳定的(不可修改的)
  • 反映历史变化的(随时间变化的)(3~5年)

数据仓库和ODS并存方案

DW和ODS串行

  • 优点:ODS的数据与数据仓库的数据高度统一;开发成本低,至少开发一次并应用到ODS即可;可见ODS是发挥承上启下的作用

  • 缺点:数据仓库需要的所有数据都需要走ODS,那么ODS的灵活性必然受到影响,甚至不利于扩展、系统的灵活性差。

DW和ODS并行

这个模型便于扩展,ODS和DW各做各的,形成优势互补!可以解决现在互联网公司遇到的快速变化、快速开发等特点!

DM(Data Mart)

数据集市,也叫数据市场,数据集市就是满足特定的部门或者用户的需求,按照多维的方式进行存储,包括定义维度、需要计算的指标、维度的层次等,生成面向决策分析需求的数据立方体。

我的理解:DM是面向主题组织数据的,DM根据业务需求把DW层数据进行聚合或生成窄表和宽表。

注意:不同的数据集市,同一含义的字段定义一定要相同,这样再以后实施数据仓库时才不会造成大麻烦。

抽取渠道

渠道:

  • 日志
  • 数据库

我们拿日志举例来讲一下。

日志抽取

一般要对数据源进行持久化备份。方便日后进行数据恢复。

数据源
  • 用户访问日志
  • 自定义事件日志
  • 服务器监控日志
  • 各服务产生的日志
  • 操作系统日志
  • 其他日志
抽取频率

根据你的需求进行设置,可以是60秒,可以是1小时,可以是一小时。要考虑数据量,最好有限速机制,当数据量大的时候,根据相应的策略进行传输,来减少对系统的压力。

数据处理

数据处理包括:

  • 数据清洗
  • 数据转换
数据清洗

不符合要求的数据

  • 不完整的数据
    • 过滤掉,写入数据存储,待补充
  • 错误的数据
    • 空值处理
      • 设成默认值
      • 补充
        • 比如生日从身份号中提取
        • 比如从其他字段中计算
      • 日期格式
      • 字段编码
      • 去除空格
      • 分列
        • 例如:北京海淀区分成
      • 合并
      • 替换
        • 把同义词转成默认值
  • 重复的数据
    • 有的时候处理完了,才能知道是否是重复数据,例:北京北 京
数据转换

根据转化规则,对清洗过的数据进行转换

  • 颗粒度转化
    • 窄表(原始数据颗粒度比较细,有可能分析时,用不到,这就需要根据业务,剔除一些字段)
    • 宽表(在内存和计算效率间权衡)
  • 指标计算,有的指标不是简单的计算就能完成的,这就需要将这些数据计算好,存储起来。

ETL开源组件实现

ODS

  • kudu
  • HBase

DW

  • hadoop

Extraction

  • filebeat
  • flume

Transformation

  • hive
  • spark
  • storm

参考资料

数据仓库

数据仓库与ODS

浅析数据库(DB)、操作数据存储(ODS)和数据仓库(DW)的区别与联系