1.问题
解决对于繁杂的CT图片的处理(ETL)问题?
针对哪些问题来说?
问题的难点:关于如何解决非结构化数据的ETL过程(关键的是你想要怎样的CT图片),在这个基础上继续的改进
2.背景
a.为什么要做这个研究
b.当前这个研究前人们都是怎么做的
c.项目的难点在哪里?该项目的意义是什么?
d.未来的研究会是怎么样的,我要做成什么样子?
3.所用技术/数据
a.数据源:来自医学的相关CT图片以及工业上的CT图片或者其他
b.数仓建设技术,数据处理技术,数学理论技术支持
4.研究方案和步骤
设计一个能够分类的系统?(关键是要把不同系统的的图片提取共性,方便查看和研究)
针对医学图片数据,你要做裁剪,突出,提取关键信息
抽取:数据来源
处理:数据的裁剪,突出,提取关键信息 或者分类
转换:CT图片能够转换成啥呢?
加载:把处理好的数据加载到数仓中
……
5.系统搭建:空
6.测试与使用:空
前人的建议:如何才能做好ETL?
1.数据抽取设计
数据的抽取需要在调研阶段做大量工作,要搞清楚以下几个问题:数据是从几个业务系统中来?各个业务系统的数据库服务器运行什么DBMS?是否存在手工数据,手工数据量有多大?是否存在非结构化的数据?等等类似问题,当收集完这些信息之后进行数据抽取的设计。常见的数据抽取设计方式有四种:
(1)与存放DW的数据库系统相同的数据源处理方法
这一类数源在设计比较容易,一般情况下,DBMS(包括SQLServer,Oracle)都会提供数据库链接功能,在DW数据库服务器和原业务系统之间建立直接的链接关系就可以写Select 语句直接访问。
(2)与DW数据库系统不同的数据源的处理方法
这一类数据源一般情况下也可以通过ODBC的方式建立数据库链接,如SQL Server和Oracle之间。如果不能建立数据库链接,可以有两种方式完成,一种是通过工具将源数据导出成.txt或者是.xls文件,然后再将这些源系统文件导入到ODS中。另外一种方法通过程序接口来完成。
(3)对于文件类型数据源(.txt,.xls)
可以培训业务人员利用数据库工具将这些数据导入到指定的数据库,然后从指定的数据库抽取。或者可以借助工具实现,如SQL SERVER 2005 的SSIS服务的平面数据源和平面目标等组件导入ODS中去。
(4)增量更新问题
对于数据量大的系统,必须考虑增量抽取。一般情况,业务系统会记录业务发生的时间,可以用作增量的标志,每次抽取之前首先判断ODS中记录最大的时间,然后根据这个时间去业务系统取大于这个时间的所有记录。利用业务系统的时间戳,一般情况下,业务系统没有或者部分有时间戳。
2.数据清洗处理规范
不符合要求的数据主要有不完成数据(缺失值)、错误数据(异常值)、重复数据、不同类型需归一化处理数据几类。几类数据的处理方法如下:
缺失值:不完整的数据,其特征是是一些应该有的信息缺失,如供应商的名称,分公司的名称,客户的区域信息缺失、业务系统中主表与明细表不能匹配等。需要将这一类数据过滤出来,按缺失的内容分别采取定(范围)删(字段)补(数据)。
定范围:哪些字段缺失,缺失范围如何,缺失字段的重要性如何?删字段:删数据的判断,a\对业务清晰的判断,b\“有心杀贼,无力回天”缺失数据太多。这时候可以看看是否有其他数据可以弥补。补数据:就是补充缺失值。这里有三种补数据的方式:A、业务知识惊讶填充;B、使用均值、中位数、众数填充;C、使用其他渠道补充,如身份证前6位是地区=手机号归属地。补全后才写入数据仓库。
异常值:产生原因是业务系统不够健全,在接收输入后没有进行判断直接写入后台数据库造成的,比如数值数据输成全角数字字符、字符串数据后面有一个回车、日期格式不正确、日期越界等。这一类数据也要分类,对于类似于全角字符、数据前后有不面见字符的问题只能写SQL的方式找出来,然后要求客户在业务系统修正之后抽取;日期格式不正确的或者是日期越界的这一类错误会导致ETL运行失败,这一类错误需要去业务系统数据库用SQL的方式挑出来,交给业务主管部门要求限期修正,修正之后再抽取。
重复数据:特别是维表中比较常见,将重复的数据的记录所有字段导出来,让客户确认并整理。
数据归一化:归一化的问题,就是将绝对数变成相对数的问题。因为不同维度的绝对数是没有可比性的,这时候需要将绝对数转化成相对一个标准的相对数。那如何进行归一化处理呢?三种方式,A、最值归一化、均值方差归一化、非线性归一化。
数据清洗是一个反复的过程,不可能在几天内完成,只有不断的发现问题,解决问题。对于是否过滤、是否修正一般要求客户确认;对于过滤掉的数据,写入Excel文件或者将过滤数据写入数据表,在ETL开发的初期可以每天向业务单位发送过滤数据的邮件,促使他们尽快的修正错误,同时也可以作为将来验证数据的依据。数据清洗需要注意的是不要将有用的数据过滤掉了,对于每个过滤规则认真进行验证,并要用户确认才行。
3.数据转换处理规范
数据转换的任务主要是进行不一致的数据转换、数据粒度的转换和一些商务规则的计算。
(1)不一致数据转换,这个过程是一个整合的过程,将不同业务系统的相同类型的数据统一,比如同一个供应商在结算系统的编码是XX0001,而在CRM中编码是YY0001,这样在抽取过来之后统一转换成一个编码。
(2)数据粒度的转换,业务系统一般存储非常明细的数据,而数据仓库中的数据是用来分析的,不需要非常明细的数据,会将业务系统数据按照数据仓库粒度进行聚合。一般数据转换有离散化和属性构造两种方式。离散化主要分为简单离散、分桶离散、聚类离散、回归平滑四类,属性构造分为特征工程和随意构造后筛选。
(3)商务规则的计算,不同的企业有不同的业务规则,不同的数据指标,这些指标有的时候不是简单的加加减减就能完成,这个时候需要在ETL中将这些数据指标计算好了之后存储在数据仓库中,供分析使用。
4.ETL日志与警告发送
(1)ETL日志
记录日志的目的是随时可以知道ETL运行情况,如果出错了,出错在那里。ETL日志分为三类。①执行过程日志,是在ETL执行过程中每执行一步的记录,记录每次运行每一步骤的起始时间,影响了多少行数据,流水账形式。②是错误日志,当某个模块出错的时候需要写错误日志,记录每次出错的时间,出错的模块以及出错的信息等。③日志是总体日志,只记录ETL开始时间,结束时间是否成功信息。
如果使用ETL工具,工具会自动产生一些日志,这一类日志也可以作为ETL日志的一部分。
(2)警告发送
ETL出错了,不仅要写ETL出错日志而且要向系统管理员发送警告,发送警告的方式有多种,常用的就是给系统管理员发送邮件,并附上错误信息,便于管理员排查。