搜索
首页数据库mysql教程kettle子转换即映射

kettle子转换即映射 子转换是非常好的特性,可以实现整个转换重用;所以如果你需要拷贝、粘贴一些相同的步骤到多个其他转换中,就可以考虑使用子转换(即映射),可以使你的ETL程序更简洁。 子转换通常从父转换中接收行输入数据,针对输入数据进行处理,再传

kettle子转换即映射

子转换是非常好的特性,可以实现整个转换重用;所以如果你需要拷贝、粘贴一些相同的步骤到多个其他转换中,就可以考虑使用子转换(即映射),可以使你的ETL程序更简洁。

子转换通常从父转换中接收行输入数据,针对输入数据进行处理,再传回给父转换。所以子转换需要有一个输入步骤和用于运行时连接到父转换的输出步骤。这些接口步骤中定义输入、输出行数据的字段结构。子转换为了实现可重用性,所以当父转换调用子转换,父转换的行字段被映射到子转换的字段作为输入;同样映射发生在处理完,返回给父转换。所以子转换也称之为映射。

下面通过示例学习子转换,把计算的内容重构,放入到一个子转换中。示例代码在这里下载。示例中的奇偶校验代码可能需要参考另一篇文章

示例转换

本示例是针对数字做计算,接收一个输入值并计算奇偶校验位(二进制中1的位数),并计算所有位数数字之和(十进制表示中数字之和),最后输出到excel中。

\

示例比较简单,假设该计算需要在项目的其他几个转换中使用,让我们重构上面示例,让其可以在其它转换中调用。

子转换存储在一个单独的文件中。“Mapping input specification”步骤作为输入,计算步骤在中间,”Mappingoutput specification”步骤作为输出,这些和映射相关的步骤在Mapping分类中。下图显示了输入步骤的配置。需要父转换转入一个整型字段名称为value到当前子转换,这些字段可能在后面的步骤中使用。复选框表示其他字段也将传入,他们流经子转换不受影响;这非常有用,如果父转换有多个字段,而子转换只需要其中一部分字段,就需要使用此选项确保其他字段不受影响。

\

计算步骤保存不变,输出另外两个字段,分别为奇偶校验位和位数之和。输出步骤无需配置,作用为提供从前面步骤输出字段给父转换。

到此子转换设计已经完成,现在需要给父转换调用,选择“Mapping”步骤(子转换)来实现。映射步骤需要确定调用那个子转换及是否需要传入任何命名参数,以及其他一些转换的公共属性;子转换很容易指定,通过文件或库路径指定。“generate random integer”步骤数据流传入子转换,子转换处理后的数据流输出到“Excel Output”步骤。把子转换连接在generate random integer”步骤和“Excel Output”步骤之间。然后在子转换步骤配置中,增加输入选项卡和输出选项卡,并且都选中两者“Is this the main data path?”选项,这就告诉kettle根据连接的原步骤和目标步骤来演绎。另外输入选项卡需要指定输入行字段和子转换的字段之间的映射关系。示例中的唯一输入字段已经是value,所以配置很容易。

\

 

关于子转换的重构已经完成,主转换调用子转换并存储结果到excel中,可以下载示例进行验证。

保留字段名称

上面的示例字段映射比较简单。实际场景中输入字段不一定和子转换中定义的名称一致。这时你可以选择让子转换做起工作并返回子转换中的字段名称,或者选择把子转换中的字段重命名成原来的输入的名称。通过“Ask these values to be renamed back on output?”选项实现,假设你映射输入字段”foo”到子转换的名称“bar”,如果你不选中该选项,表示从子转换中输出字段名称为bar;反之选中该选项,输出字段名称还是原来的foo。这个特性让子转换具有解耦性相对父转换。

上面示例子转换仅有一个输入、输出,然而子转换可以有多个输入、输出。为了演示,我们分离计算步骤成两条独立的路径,分别为计算奇偶校验位和技术位数和。

\

现在子转换有两个输入、输出,从父转换的整数值需要传入到两个输入并且输出到不同的excel文件中。这样保存奇偶校验位在一个文件中,位数之和在另一个文件中。父转换也需要重构并改变。

\

 

如果你下载了示例,你将注意映射步骤有两个输入和输出。“Is this the main data path?”选项不再选中,期望kettle根据连接从输入到输出已不现实。原步骤和目标步骤都是手工定义的;其实映射步骤和输入、输出之间的连接是象征性的,完全可以删除连接却不影响运行(不用担心,你完全可以试试)。示例中保留连接,这样看起来比较习惯。另外需要指出的是,“Generate random integer”步骤有两个后续步骤(子转换的两个输入步骤),因此需要复制记录到两个后续步骤,而不是分发。

结论

kettle映射特性让转换有了可重用性,让ETL程序具有简洁性。其输入、输出步骤及参数配置非常灵活,几乎可以让任何复杂的转换重构成可重用的子转换。如果转换比较大,也可以重构成连续的子转换组合实现。子转换让转换数据流案结构化,更容易理解。 
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
MySQL中的存储过程是什么?MySQL中的存储过程是什么?May 01, 2025 am 12:27 AM

存储过程是MySQL中的预编译SQL语句集合,用于提高性能和简化复杂操作。1.提高性能:首次编译后,后续调用无需重新编译。2.提高安全性:通过权限控制限制数据表访问。3.简化复杂操作:将多条SQL语句组合,简化应用层逻辑。

查询缓存如何在MySQL中工作?查询缓存如何在MySQL中工作?May 01, 2025 am 12:26 AM

MySQL查询缓存的工作原理是通过存储SELECT查询的结果,当相同查询再次执行时,直接返回缓存结果。1)查询缓存提高数据库读取性能,通过哈希值查找缓存结果。2)配置简单,在MySQL配置文件中设置query_cache_type和query_cache_size。3)使用SQL_NO_CACHE关键字可以禁用特定查询的缓存。4)在高频更新环境中,查询缓存可能导致性能瓶颈,需通过监控和调整参数优化使用。

与其他关系数据库相比,使用MySQL的优点是什么?与其他关系数据库相比,使用MySQL的优点是什么?May 01, 2025 am 12:18 AM

MySQL被广泛应用于各种项目中的原因包括:1.高性能与可扩展性,支持多种存储引擎;2.易于使用和维护,配置简单且工具丰富;3.丰富的生态系统,吸引大量社区和第三方工具支持;4.跨平台支持,适用于多种操作系统。

您如何处理MySQL中的数据库升级?您如何处理MySQL中的数据库升级?Apr 30, 2025 am 12:28 AM

MySQL数据库升级的步骤包括:1.备份数据库,2.停止当前MySQL服务,3.安装新版本MySQL,4.启动新版本MySQL服务,5.恢复数据库。升级过程需注意兼容性问题,并可使用高级工具如PerconaToolkit进行测试和优化。

您可以使用MySQL的不同备份策略是什么?您可以使用MySQL的不同备份策略是什么?Apr 30, 2025 am 12:28 AM

MySQL备份策略包括逻辑备份、物理备份、增量备份、基于复制的备份和云备份。1.逻辑备份使用mysqldump导出数据库结构和数据,适合小型数据库和版本迁移。2.物理备份通过复制数据文件,速度快且全面,但需数据库一致性。3.增量备份利用二进制日志记录变化,适用于大型数据库。4.基于复制的备份通过从服务器备份,减少对生产系统的影响。5.云备份如AmazonRDS提供自动化解决方案,但成本和控制需考虑。选择策略时应考虑数据库大小、停机容忍度、恢复时间和恢复点目标。

什么是mySQL聚类?什么是mySQL聚类?Apr 30, 2025 am 12:28 AM

MySQLclusteringenhancesdatabaserobustnessandscalabilitybydistributingdataacrossmultiplenodes.ItusestheNDBenginefordatareplicationandfaulttolerance,ensuringhighavailability.Setupinvolvesconfiguringmanagement,data,andSQLnodes,withcarefulmonitoringandpe

如何优化数据库架构设计以在MySQL中的性能?如何优化数据库架构设计以在MySQL中的性能?Apr 30, 2025 am 12:27 AM

在MySQL中优化数据库模式设计可通过以下步骤提升性能:1.索引优化:在常用查询列上创建索引,平衡查询和插入更新的开销。2.表结构优化:通过规范化或反规范化减少数据冗余,提高访问效率。3.数据类型选择:使用合适的数据类型,如INT替代VARCHAR,减少存储空间。4.分区和分表:对于大数据量,使用分区和分表分散数据,提升查询和维护效率。

您如何优化MySQL性能?您如何优化MySQL性能?Apr 30, 2025 am 12:26 AM

tooptimizemysqlperformance,lofterTheSeSteps:1)inasemproperIndexingTospeedUpqueries,2)使用ExplaintplaintoAnalyzeandoptimizequeryPerformance,3)ActiveServerConfigurationStersLikeTlikeTlikeTlikeIkeLikeIkeIkeLikeIkeLikeIkeLikeIkeLikeNodb_buffer_pool_sizizeandmax_connections,4)

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器