样本数据处理 课件 第7、8章 基于Kettle构建数据仓库、基于Python的数据导入与导出_第1页
样本数据处理 课件 第7、8章 基于Kettle构建数据仓库、基于Python的数据导入与导出_第2页
样本数据处理 课件 第7、8章 基于Kettle构建数据仓库、基于Python的数据导入与导出_第3页
样本数据处理 课件 第7、8章 基于Kettle构建数据仓库、基于Python的数据导入与导出_第4页
样本数据处理 课件 第7、8章 基于Kettle构建数据仓库、基于Python的数据导入与导出_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于Kettle构建数据仓库新工科建设之路·数据科学与大数据系列样本数据处理第七章01数据仓库的介绍在建设数据仓库之前,数据散落在企业各部门应用的数据存储中。如果要做数据分析,需要直接从业务数据库中取数据来做分析。业务数据库主要为业务操作服务,虽然可以用于分析,但需要做很多额外的调整,主要有以下几个问题:结构复杂、数据脏乱、理解困难、缺少历史、大规模查询缓慢。数据仓库的起因因为业务数据库会接受大量用户的输入,如果业务系统没有做好足够的数据校验,就会产生一些错误数据,如不合法的身份证号等。数据脏乱业务数据库中存在大量语义不明的操作代码,如各种状态的代码、地理位置的代码等,在不同业务中的同一名词可能还有不同的叫法。理解困难数据仓库的起因业务数据库通常是根据业务操作的需要设计的,遵循3NF范式,尽可能减少数据冗余。结构复杂当业务数据量较大时,查询就会变得缓慢。大规模查询缓慢数据仓库的起因出于节约空间的考虑,业务数据库通常不会记录状态流变历史,这就使得某些基于流变历史的分析无法进行。缺少历史萌芽阶段:分析系统和业务系统只能采用完全不同的架构和设计方法分别处理。数据仓库的探索阶段:一个结构化的环境,能支持最终用户管理其全部的业务,并支持信息技术部门保证数据质量。数据仓库的形成阶段。数据仓库的发展数据仓库之父比尔·恩门在1991年出版的BuildingtheDataWarehouse《《建立数据仓库》)一书中所提出的定义被广泛接受数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策和信息的全局共享。数据仓库的定义数据仓库的主要功能是将联机事务处理(OLTP)经年累月所累积的大量资料,通过数据仓库理论所特有的数据储存架构,对数据进行一个系统的分析整理,以利于各种分析方法如联机分析处理(OLAP)、数据挖掘(DataMining)的进行,并进而支持如决策支持系统(DSS)、主管资讯系统(EIS)的创建,帮助决策者可以在大量资料中,快速有效地分析出有价值的信息,以利于决策的拟定及快速回应外在环境变动,帮助构建商务智能(BI)。数据仓库的定义数据仓库中的数据是面向主题的。操作型数据库的数据组织面向事务处理任务,各个联机事务处理系统之间各自分离,而数据仓库中的数据是按照一定的主题域进行组织的。主题是一个抽象的概念,是用户使用数据仓库进行决策时所关心的重点方面,一个主题通常与多个操作型信息系统相关。数据仓库中的数据是集成的。面向事务处理的操作型数据库通常与某些特定的应用相关,数据库之间相互独立,并且往往是异构的。数据仓库的特点数据仓库中的数据是相对稳定的。操作型数据库中的数据通常实时更新,数据根据需要及时变化。数据仓库中的数据反映历史变化。操作型数据库主要关心当前某一个时间段内的数据,而数据仓库中的数据通常包含历史信息,系统记录了企业从过去某一时间点(如开始应用数据仓库的时间)到目前的各个阶段的信息,通过这些信息,可以对企业的发展历程和未来趋势做出定量分析和预测。数据仓库的特点数据仓库的结构仓库的基本架构主要包含的是数据流入流出的过程,可以分为三层一一源数据、数据仓库、数据应用,如图7-1所示。数据仓库建模如图7-2所示,维度建模的架构是典型的星型架构。数据仓库从各数据源获取数据及在数据仓库内的数据转换和流动都可以认为是ETL(Extract-Transform-Load)的过程,ETL是数据仓库的流水线,也可以认为是数据仓库的血液,它维系着数据仓库中数据的新陈代谢,而数据仓库日常的管理和维护工作的大部分精力就是保持ETL的正常和稳定。数据仓库与ETL的关系02构建维度表最佳实践表明,原则上在维度表中应有代理键,一般用自动生成无意义的整型数值作为代理键。代理键的管理管理各种键业务主键的主要作用是区分业务主体,必须来源于源系统,即来源于上游的业务系统。为方便管理,业务主键和代理键一起存储在维度表中。业务主键的管理维度表的加载1.星型模式星型模式顾名思义,事实表和维度表形成星形的样式,即以事实表为中心,外围是若干张维度表;维度表通过主键和事实表的外键关联,如图7-12所示。维度表的加载2.雪花模式雪花模式是在星型模式的基础之上扩展而来的,每个维度可以再扩散出更多的维度,根据维度的层级拆分成颗粒度不同的多张表,如图7-13所示。业务主体数据变化时,用当前最新数据覆盖旧数据,只保留最新版本数据。业务主体数据变化时,用当前最新数据生成新的记录,保存多个历史版本。业务主体数据变化时,用当前最新数据生成新的记录,并且在该行记录中记录上一个版本部分关键信息。缓慢变化维度(1)部分重要性不高的字段,如果数据有更新,希望直接覆盖旧记录。(2)部分重要字段,如果数据有更新,希望保存本次记录及历史记录。(3)部分次重要字段,如果数据有更新,希望保存本次记录及上次记录。数据仓库与ETL的关系03构建事实表事实表是业务数据的集合,其数据量较大,往往有几GB、几十GB、几TB,某些行业甚至有几PB的数据。在数据量不大的情况下,可以采用“表输出”步骤实现,但在数据量巨大的情况下,此方法是不适合的,原因在于:“表输出”步骤对数据库操作是基于数据操作语言(DataManipulationLanguage,DML)语句实现的,对数据库进行DML操作会带来两个问题。批量加载批量加载1.MySQL批量加载“MySQL批量加载”的设置如图7-25所示。批量加载2.Oracle批量加载“Oracle批量加载”的设置如图7-28所示。参照完整性指的是事实表和维度表之间建立的外键约束。维护数据完整性获取维度表代理键是构建事实表重要环节之一。查找维度表代理键在数据加载中正常的加载顺序应是“先加载维度表,再加载事实表”。处理数据延迟查找维度常见的事实表主要有以下3种类型。事务型事实表(Transactionfacttable):是事务粒度的,以单个事务、单个事件为单位,每个事务作为事实表的一行数据,如刷卡一次会有一条刷卡记录。周期快照事实表(Periodicsnapshotfacttable):是时间周期粒度的,以固定时间周期为单位,每个时间周期对应一行数据,如每一天、每一个月的话费支出。累积快照事实表(Aecumulatingsnapshotfacttable):当新的事实到达后,更新事实表的记录。事实表的处理事实表的处理事务型事实表示例如图7-29所示。事实表的处理加载事务型事实表流程示例如图7-30所示。事实表的处理周期快照事实表示例如图7-36所示。事实表的处理加载周期快照事实表流程示例如图7-37所示。事实表的处理累积快照事实表示例如图7-42所示。事实表的处理加载累积快照事实表流程示例如图7-43所示。基于Python的数据导入与导出新工科建设之路·数据科学与大数据系列样本数据处理第八章01PandasSeries是一种类似于数组的一维数据结构,它包含一系列的元素及元素对应的标签。元素的标签被称为index。使用Pandas的功能之前,需要先导入Pandas模块。本章的Python代码运行环境为IPython,版本是6.1.0,对应的Python版本为3.6.3。SeriesSeries对象输出的左边一列是索引(index),右边一列是对应的元素值,最下面一行是元素的类型。由于代码中创建Series对象时没有指定index,默认创建的index是0~N-1的整数值,其中N是Series对象的元素个数。除了把Series看成一种类似于数组的数据结构,还可以把它看成一种定长且有序的map,map的key是index,value是Series的元素值。因此,许多map的操作可以应用在Series上。SeriesSeries对象的index也可以通过赋值来改变。SeriesSeries对象是可变的,这意味着通过赋值能够改变它。DataFrameDataFrame是一种带标签的二维数据结构,有行索引、列索引,其中各列可以存储不同的数据类型。为了帮助理解,可以将一个DataFrame对象想象为Excel中的一张表或数据库中的一张表。DataFrame也可以看作Series的集合,DataFrame是Pandas中最常用的数据结构。构造一个DataFrame对象有多种方式,其中常用的一种方式是基于dict构造。DataFrame的各列是有序排列的,可以在创建时传递columns参数调整顺序,而index参数为每一行指定了一个index。columns参数中指定的列如果不存在,那么创建的DataFrame对象中的对应列值均为NaN,表示一个不可用的值。使用类似于获取dict值的语法,能够获取DataFrame对象的一列,存放在Series对象中。DataFrame02文本文件的导入与导出CSV(CommaSeparatedValues,逗号分隔的值).CSV文件是一种比较简单的文本,广泛用于存储表格式的行列数据,可以直接使用Excel软件打开。Pandas提供了read_csv函数,用于导入CSV文件,并得到一个DataFrame对象。此外,Pandas还提供了read_table函数,能够导入用其他分隔符的类CSV文件。在IPython中,可以使用!语法运行外部命令。cat是Linux上的一个命令,用于将文件内容显示在屏幕上,在Windows环境下可以用type命令显示文件。导入CSV文件可以使用read_csv函数将文件内容读入一个DataFrame对象。Pandas还提供另外一个函数read_table函数,可以用于读入CSV文件。testl.csv文件的第一行指定了各列的名称,但是很多时候CSV文件没有这样的名称行。导入CSV文件Pandas也提供了反向的操作,能够将DataFrame导出为CSV格式的文件。read_csv函数的返回值是一个DataFrame对象,它具有to_csv方法,能够达到导出的目的。导出CSV文件DataFrame中的缺失值默认使用空字符串,narep参数可以改变这一行为。to_csv的默认行为会输出index列和标题行,如果不希望输出这些,可以将index和header均设置为False。如果不希望输出所有列,可以使用columns参数选择只输出一部分。导出CSV文件JSON格式数据的导入与导出JSON(JavaScriptObjeetNotation,JS对象简谱)格式在Web中使用非常广泛,常用于前端网页的JavaScript脚本和后端Web服务器交换数据。与表格型的数据相比,JSON格式的数据更加复杂和灵活,能够表达类似于树结构的数据。现存多种库和工具用于JSON格式数据的处理。对常规的任务,使用Python语言内置的JSON模块是最方便的。在使用JSON模块之前应先导入它。JSON模块的load函数能够导入JSON数据,返回值是一个dict对象。JSON模块的dump函数提供了反向的功能,将一个dict对象导出为JSON格式的文件。JSON格式数据的导入与导出03Excel文件的导入与导出Excel是微软的经典之作,在日常工作中的数据整理、分析和可视化方面,有其独到的优势。但如果数据量超大,Excel的劣势也就随之而来,甚至因为内存溢出无法打开文件,后续的分析更是难上加难。本节介绍使用Python的Pandas解决此问题,即通过Pandas完成读/写Excel。Excel文件的导入与导出Pandas会默认读取Excel文件中的第1个工作表,也就是默认名为Sheetl的工作表。Excel文件的导入与导出Pandas读取Excel可以通过readexcel函数将工作表读取成DataFrame。04数据库的导入与导出将关系数据库的表格数据导入成Pandas的DataFrame并不难理解。Pandas连接关系数据库需要Python连接对应数据库的客户端,以MySQL数据库为例,Python连接它的库有几种,最常用的是PyMySQL,用户可以通过pip或者Anaconda方式进行安装。关系数据库的导入与导出非关系数据库(NoSQL)具有多种多样的存储方式和产品实现。其中,Mon

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论