数据抽取方式
案例说明
ETL 过程的第一步就是从一个或多个数据源获取数据。数据抽取是一个艰难的工作,因为数据源是多样和复杂的。
在传统的数据仓库环境下,数据通常来源于企业的事务类应用系统,如财务系统或 ERP 系统。大部分这类系统都是把数据存储在关系数据库中,如 MySQL 、Oracle 或 SQL Server。
抽取一般要从业务的角度来抽取,这也是一个挑战,从技术上来看,最好能使用 JDBC 直接连接数据库。但如果数据库不是关系型的或者没有可用的驱动,数据抽取就会更有挑战性。
在这种情况下,一般就需要使用逗号分隔的文本文件来获取数据。
还有一种情况就是数据属于其他人,可能是某个供应商或客户的数据,数据位于公司防火墙之外。在这种情况下,不可能直连,使用文本文件交换数据是唯一选择。如果数据位于互联网上,文本文件也不能使用。
在ETL项目里还应重视数据特征,它描述了数据的基本结构,它是数据的一组统计信息,能从总体上了解数据内容和数据质量。
本案例将使用几种不同的数据抽取组件来抽取不同类型的数据,以及如何支持不同的CDC(Change Data Capture)技术。
数据准备
本案例中“从CSV文件中读取数据”小节将使用 etl_test_input.csv 和 etl_test_output.csv 数据;
本案例中“从文本文件中读取数据”小节将使用足球比赛数据:usa_201209.txt;
本案例中“从Excel中读取数据”小节将使用购房者信息数据:custinfo.xlsx;
以上数据文件均从“UDI Studio 平台”的“公共空间”里面获取。
从CSV文件中读取数据
本小节将计算【start_date】与【end_date】字段之间所间隔的天数,并根据所隔天数来设定字段【performance】的值。
通过“CSV文件输入”组件从CSV文件中读取数据后,使用“字段选择”组件可以保留所需字段。
在“计算器”组件中新建【diff_date】字段用于计算日期间隔。计算好间隔天数,在通过“数值范围”组件设置【performance】字段的值,其中【performance】字段为“数值范围”组件产生的新的输出字段。
具体操作如下:
1、新建转换,拖拽“CSV文件输入”组件至画布,双击组件,在弹出的对话框中单击“浏览文件”,选择需要读取的CSV文件。并在下方数据区域点击右键,选择“获取字段”,配置如下图所示:
2、配置好“CSV文件输入”组件后,选中该组件,右击并选中“预览”查看数据。结果如下图所示:
3、将“字段选择”组件拖至画布,并建立从“CSV文件输入”到“字段选择”的连接。双击“字段选择”,点击右键“获取字段”,配置如下图所示:
4、拖拽“计算器”组件至画布,并建立从“字段选择”到“计算器”之间的连接(在弹出的提示框中选择“主输出步骤"),右键"插入”,双击填写新字段信息,“计算器”组件配置如下图所示:
5、拖拽“数值范围”组件至画布,建立从“计算器”到“数值范围”之间的连接,“数值范围”配置如下图所示:
6、拖拽“文本文件输出”组件至画布,建立从“数值范”到“文本文件输出”之间的连接,“文本文件输出”配置如下图所示:
7、完成所有步骤后,整个转换视图如下图所示:
8、点击画布左上角“
”按钮运行转换,并在弹出的提示框中点击“启动”按钮,即可运行整个转换。结果如下图所示:
运行转换前etl_test_output表:
运行转换后etl_test_output表:
运行结果:
从文本文件中读取数据
本小节利用足球比赛数据演示一个 ETL 的简单应用,其中足球比赛数据包括比赛日期,比赛地点,主客队以及比分。
通过 “CSV文件输入” 组件可以读取文本文件的数据,“字段选择”组件则可以选择或修改源数据。“空操作(什么也不做)”组件只接受数据,但是不做任何处理,一般只是测试数据的输出结果。具体操作如下:
1、新建转换,拖拽“CSV文件输入”组件至画布。双击组件,在文件名框中选择要上传的文件,列分隔符用“;”(注意,这里的分隔符要对应文件中分隔符的格式。例如,文件中为英文“;”则对应英文,若为中文“;”,则对应中文),勾选“包含列头行”。配置完成完成后,在最下面的文本框中右击空白部分会弹出一个提示框,选择“获取字段”按钮可以获取文本文件中的字段。配置如下图所示:
2、选择“CSV文件输入”,右击并选择预览,预览数据,如下图所示:
3、拖拽“字段选择”和“空操作(什么也不做)”组件至画布,并按顺序连接。若提示选择步骤,依然选择“主输出步骤”。完整转换如下图所示:
4、双击“字段选择”组件,右键获取字段信息,选中“移除”标签,在空白文本框中选择要移除的字段 “Venue” 。配置如下图所示:
5、运行转换,结果如下图所示:
6、选中“空操作(什么也不做)”组件,右击并选中“预览”查看数据。结果如下图所示:
从Excel文件中读取数据
本小节主要是展现“Excel”类型的文件的输入。数据背景源于近年来房地产市场的火爆,房价在节节攀升,对于普通人来说,购买一套合适的住房可能是一生中最大的投资,仓促地做出购房决策可能会影响到人们将来的生活质量与幸福。因此,很多人不得不慎重考虑购房问题。房地产市场也在不断地推出新的楼盘,房屋价格、环境、面积、户型等各有不同.
购房者对住房的价格、环境的优劣、小区物业的服务质量和户型上的合理性等诸如此类的问题会有选择上的困惑,使得做出购房决策难上加难。根据影响购房决策的因素,如年龄、性别、学历、月薪和家庭人数等数据,应用数据进行建模,这时可能需要对获取的数据进行过滤筛选。
本案例中将获取到的购房者信息数据进行字段选择,得到想要关心的字段数据信息,具体操作如下:
1、新建转换,在“输入”中拖拽“Excel输入”组件至画布。双击组件,点击浏览按钮,选择上传的Excel文件,然后点击增加将文件添加到选中的文件列表。配置如下图所示:
2、在最工作表栏目的下方点击“获取工作表名称”,如图:
3、在字段栏目下方空白处,右键选择“获取来自头部的字段”,完成如图:
4、将“转换”中的“字段选择”组件和“流程”中的“空操作”组件拖拽至画布,并按顺序连接,选着连接线类型为主输出,如图:
5、双击“字段选择”字段,在“选择和修改”栏目下的空白面版右键“获取字段”,并选择需要的字段,如下图所示:
6、运行转换流,结果如下图所示:
7、右键“空操作”组件,点击预览数据,结果如下图所示: