通过了解一般ETL工具必备的特性和功能,这样可以判断出Kettle是否适用你手边的工作。
连接
任何ETL工具都应用有能力连接到类型广泛的数据源和数据格式。ETL应该能提供下面最基本的功能:
- 连接到普通关系型数据库并获取数据,如常见的Oracle、MS SQL Server、IBM DB/2、Ingress、MySQL和PostgreSQL
- 从有分隔符或固定格式的ASCII文件中获取数据
- 从XML文件中获取数据
- 从流行的办公软件中获取数据,如Access数据库和Excel电子表格
- 使用FTP、SFTP、SSH方式获取数据(最好不用脚本)
除了上述这些功能,还要能从Web Services或RSS中获取数据。
平台独立
一个ETL工具应该能在任何平台上甚至是不同平台的组合上运行
数据规模
一般ETL能通过下面3种方式处理大数据
- 并发:ETL过程能够同时处理多个数据流,以便利用现代多核的硬件架构
- 分区:ETL能够使用特定的分区模式,将数据分发到并发的数据流中
- 集群:ETL过程能够分配在多台机器上联合完成
设计灵活性
一个ETL工具应该留给开发人员足够的自由度来使用,而不能通过一种固定的方式来限制用户的创造力和设计的需求。
ETL工具可以分为基于过程和基于映射的。基于映射的工具一般易于使用,可快速上手,但是对于更复杂的任务,基于过程的工具才是最好的选择。
复用性
设计完的ETL转换应该可以被复用,这也是ETL工具的一个不可或缺的特征。
扩展性
几乎所有的ETL工具都提供了脚本,以编程的试来解决工具本身不能解决的问题。
数据转换
常用的ETL工具提供了下面一些最基本的整合功能:
- 缓慢变更维度
- 查询值
- 行列转换
- 条件分割
- 排序、合并、连接
- 聚集
测试和调试
测试通常分为黑盒测试(也叫功能测试)和白盒测试(结构测试)。
黑盒测试,ETL转换就被认为是一个黑盒子,测试者并不了解黑盒子的功能,只知道输入和期望的输出。
白盒测试,要求测试者知道转换内部的工作机制并依此设计测试用例来检查特定的转换是否有特定的结果。
调试实际是白盒测试中的一部分,通过高度可以让开发者或测试者一步一步地运行一个转换,并找出问题的所在。
血统和影响分析
血统分析和影响分析是基于元数据的两个相关特性。
血统是一种回溯性的机制,它可以查看到数据的来源。例如,“价格”和“数量”字段作为输入字段,在转换中根据这两个字段计算出“收入”字段。即使在后面的处理流程里过滤了“价格”和“数量”字段,血统分析功能也能分析出“收入” 字段是基于“价格”和“数量”字段的。
影响分析是基于元数据的另一种分析方法,该方法可以分析源数据字段对随后的转换以及目标表的影响
日志和审计
为了保证数据仓库里的数据可靠性,同时保证可以记录所有的数据转换操作,ETL工具应该提供日志和审核功能。
日志可以记录下在转换过程中执行了哪些步骤,包括每个步骤开始的结束时间戳。
审核可以追踪到对数据做的所有操作,包括读行数、转换行数、写行数。