kettle

一、数据预处理概述

1.数据质量涉及许多因素,包括,准确性、完整性、一致性、时效性、相关性、可信性和可解释性。

2.数据预处理的主要流程有:数据清理、数据集成、数据变换与数据规约。

	数据请理:试图填充缺失值,光滑噪声和识别离群点,并纠正数据中的不一致。

	缺失值:使用最可能的值填充缺失值,可以使用回归、贝叶斯形式化方法的基于推理的工具或决策树归纳确定。也可以使用已有数据的大部分信息来推测缺失值。

	数据集成:数据挖掘经常需要数据集成,小心集成数据有利于减少结果数据集的冗余和不一致,方便挖掘数据过程中的准确性和速度。

	数据变换中的规范化:把属性数据按比例缩放,使之落入一个特定小的区间,常见有最小-最大规范化、z-score规范化、小数定标规范化。

	数据规约:指在尽可能保持数据原貌的前提下,最大限度的精简数据量。数据规约策略包括维规约、数量规约和数据压缩,存放数据规约表示的非参数方法包括直方图、聚类、抽样和数据立方体聚集。

3.常见让噪声数据光滑的手段有:分箱、回归、离群点分析。

4.冗余数据的删除即是一种数据清理形式,也是一种数据规约。

二、kettle的初步使用

1.在kettle里,数据的单位是行,数据流就是数据行从一个步骤到另一个步骤的移动,数据流的另一个同义词就是记录流。

2.一个步骤有如下几个关键特性:

  • 步骤需要有唯一的名字
  • 每个步骤都会读、写数据行
  • 步骤之间通过跳进行数据行的单向传输。
  • 大多数的步骤都可以有多个输出跳。
  • 在运行转换时,一个线程运行一个步骤,所有步骤几乎同时运行。

3.对于kettle的转换,从程序执行的角度看,不可能定义一个执行的顺序,也不可能确定一个起点步骤和终点步骤。

4.kettle的参数配置分为环境变量设置和命名参数两类。环境变量具有全局性质,配置后对所有的转换、作业都可用,有效,命名参数具有局部性,仅对当前转换、作业有效。

三、基于Kettle的数据导入与导出

1.Kettle都可以使用表输入、表输出这两个步骤完成数据的导入与导出。

2.CDC是识别除变化的数据并只导入这部分数据被称为变化数据捕捉。

3.基于源数据的CDC最常见的属性列有:时间戳和自增序列。

4.基于时间戳的CDC的缺点有:

  • 只有数据源中包含了插入时间和更新时间两个属性列,才能区分插入和更新。
  • 不能捕捉物理删除操作,只能捕捉到逻辑删除。
  • 如果在同一个同步周期内,数据被更新了多次,那么只能同步最后一次的更新操作。

5.基于CDC案例中,cdc_time_log表的主要作用是记录上一次执行的时间,拉取当前时间与上次执行时间之间的数据作为增量数据。

6.基于自增序列的源数据CDC案例中,cdc_seq_log表的主要作用是记录上次执行的序列值,拉取当前执行序列与上次执行序列之间的数据作为增量数据。

7.基于触发器的CDC的设计思路是:源表进行insert、update、delete操作时,利用数据库自有的触发器,将操作的数据记录到日志表中,然后根据日志表的记录对目标表进行相应的处理。

8.基于触发器的CDC的优点:它可以实时监测到数据的所有变化,缺点是:需要服务协议或者数据库管理员的允许,此外各个数据库创建触发器的语法也不同。

9.基于日志的CDC也有其缺点:就是只能用来处理一种特定的数据库,如果要在异构的数据库环境使用基于日志的CDC方法,就需要使用类似Oracle GlodenGate的商业软件。

四、数据请理

1.对于字符串操作(String operations)步骤设置为 Trim type 为both状态表示去除首尾的空白字符,设置为lower/Upper 为upper状态,表示将其全部转换成大写,设置Digits为only状态表示过滤掉无效的字母。

2.字段清理常见的4个步骤:拆分字段成多行、拆分字段、合并字段、字段选择。

3.拆分字段

  • 将指定的输入字段根据分隔符拆分成多个字段
  • 被拆分的字段将不复存在
  • 分隔符不支持正则表达式

4.字段选择,可以更改字段的数据类型和精度、修改字段名和数据类型。在元数据选项卡可以重命名输入字段,也可以将其转换为不同的数据类型,还可以更改其长度和精度。

5.使用参照表清理数据主要有两个用途:一是使用参照表校验数据的准确性;而是使用参照表使数据一致。

6.使用参照表校验数据的准确性的具体流程:

		第一步,设计两个输入,一个是客户信息表,也就是源数据表,另一个是参照数据,用于查询,第二步,添加一个查询步骤,它会根据邮编查找参照表里的城市名,第三步,对查询出来的城市与原城市名做一个对比,计算出相似度,第四步,将最终的数据输出到一个表格,便于查看。转换中涉及一些新的步骤,如查询步骤、比较相似度的步骤。

7.在kettle里有两个步骤可以计算相似度,一个是计算器(calculator),另一个是模糊匹配(Fuzzy match)。

8.重复数据分为两类:一类是完全重复数据、另一类是不完全重复数据。对不完全重复数据,要对整个数据集的检查需要所有记录之间进行两两匹配,计算复杂度为 O(n^2) ,它也可以计算字符串的相似度,首先通过模糊匹配找出疑似重复数据,然后结合其他参考字段做数据排重。

5.Kettle作业设计

1.一个作业项传递了一个结果对象,结果对象包含了以下信息。

  • 一组数据行
  • 一组文件名
  • 读、写、输入、输出、更新、删除、拒绝的行数和转换里的错误数
  • 脚本作业项的退出状态

2.作业的跳是作业项之间的连接线,它定义了作业的执行流程,对作业项的运行结果的判断流程有:

  • 无条件的:不管上一个是否成功,下一个都会执行
  • 当结果为真的时候继续下一步
  • 当结果为假的时候继续下一步

3.Kettle使用一种回溯算法来执行作业里的所有作业项。

4.start作业项是一个特殊的作业项,因为作业的顺序地执行作业项的,所以必须定义一个起点,start作业项就定义了这个起点,要注意的是,一个作业必须而且只能定义一个start作业项。

5.Kettle作业的监控方式有两种,即日志和邮件。

6.Kitchen和pan在概念和用法上都非常接近,这两个命令的参数也基本一样,唯一不同的是Kitchen用于执行作业,而Pan用于执行转换。

6.构建数据仓库

1.数据仓库是一个面向主题的、集成的、相对稳定的、反应历史变化的数据集合,用于支撑管理决策和信息的全局共享,它主要由维度表和事实表组成,其中维度表主要存放基础属性,事实表主要存放各种业务数据。

2.维度表的构建主要涉及以下两种键:

  • 业务主键,来源于源系统的业务,是业务主体的唯一标识。
  • 代理键,为了确定维度表中唯一的行而增加的键。

管理上面两种键,需要做到以下工作:

  • 确定业务主体对象,确保业务主键的唯一性
  • 判断当前维度表是否存在业务主键,根据业务主键更新维度表或者插入维度表数据。
  • 为新插入的维度表的行数据生成代理键

3.业务主键的管理要注意:确保业务主键唯一和对业务主键进行合并处理。

4.p206:此方法的缺点是获取的最大序列值需要和输入的序列值进行相加,计算量大,执行效率低。

5.加载维度表时,要根据维度表的特点,选择合适的加载顺序。

6.星型模型的特点:维度表通过主键和事实表的外键关联。

7.雪花模型:每一个维度可以再扩散出更多的维度,根据维度的层级拆分成颗粒度不同的多张表。

8.缓慢变化维度是数据仓库的重要概念,指维度信息会随着时间的流动发生缓慢的变化,现实中事物的属性并不是不变的,它会随着时间的变化而发生缓慢的变化。

9.常见的缓慢变化维度主要有以下三种类型:

  • 业务主体数据发生变化时,用当前最新数据覆盖旧数据,只保留最新版本数据
  • 业务主体数据发生变化时,用当前最新数据生成新的记录,保存多个历史版本
  • 业务主体数据发生变化时,用当前最新数据生成新的记录,并且在改行记录中记录上一个版本部分关键信息。

10.在数据加载中,正常的加载顺序是应该是,先加载维度表,再加载事实表,因为事实表需要维度表的代理键,而维度表的代理键是再加载维度表过程中生成的,但实际上存在不少数据延迟的现象。

11.常见的事实表主要有以下三种类型:

  • 事务型事实表:是事务粒度的,以单个事务,单个事件为单位,每次事务作为事实表的1行数据,如刷卡一次,会有一条刷卡记录。
  • 周期快照事实表:是时间周期粒度的,以固定时间周期为单位,每个时间周期内对应一行数据,如每一天,每一个月的话费支出。
  • 累计快照事实表(没要求)

7.基于python的数据导入与导出

1.pandas 提供了两种主要数据结构——Series和DataFrame,其中,Series用于处理一维数据,DataFrame用于处理二维数据。

2.Series 是一种类似于数组的一维数据结构,包含一系列的元素及元素对应的标签,元素的标签称为index

3.通过访问Series对象的values属性和index属性,可以获取元素值和index值。

4.DataFrame是一种带标签的二维数据结构,其中各列可以存储不同的数据类型,最常见的是基于dict构造。

5.可以通过read_csv函数将文件内容读入一个DataFrame中。

6.isnull函数判断DataFrame对象中的缺省值。

8.基于python的数据整理

1.pandas.merge:基于一个或多个键连接多个DataFrame的行。

2.pandas.concat:按行或列将不同的对象叠加在一起。

3.combine_first:将一个对象填充另一个对象中相应位置的缺失值。

4.Series的map方法可以接受一个函数或含有映射关系的字典型对象。

5.利用fillna方法填充缺失数据可以看作是值替换的一种特殊情况,map可用于修改对象的数据子集,而replace则提供了一种实现该功能的更简单、更灵活的方式。

6.如果想获得数据集转换后的结果,而不修改原始数据,可以使用rename方法。

posted @ 2021-01-06 10:24  cyoking  阅读(1378)  评论(0)    收藏  举报