【KNIME案例】使用工作流将python代码转化为Excel工具

背景:工程实际当中涉及到复杂的算法逻辑,一般需要IT人员通过编写代码来实现(例如Python脚本代码)。业务人员有可能需要复用这些代码,实现同样的计算功能,但由于他们对编程并不熟悉,无法直接加以应用。这就产生一个需求,需要将Python脚本代码里面的计算逻辑,转化为他们熟悉的工具和技能体系。这里介绍了一种借助KNIME的实现方式,使用工作流将python脚本代码转化为Excel计算公式,自动生成同一功能的Excel工具,然后交给业务人员使用。在基本功能的基础上,业务人员可以进行局部调整和功能拓展,发挥他们的经验,有效地形成组织层面的革新,提高人与人,人与机器的协同能力。

方案:简要阐述一下思路,首先,使用KNIME的数据源加载节点(对接Excel文件,txt文本文件,xml,json,py格式文件,数据库等等的节点)读取脚本代码,其中包含了具体业务的算法逻辑。其次,对这样的代码,比如python代码,进行文本处理,获取参数名字,公式体系等等信息;其中,公式体系需要通过文本替换,将其中具体的参数名,改变为Excel坐标位置,从而将python代码转换为Excel公式形式。再次,构思Excel工具模板的样式,确定前面更新后的文本信息的具体坐标位置,新建Excel文件及工作簿,通过xlwt python库将对应的文本信息、公式信息等写入到Excel模板当中。最后,将这样的模板工具,交付业务人员使用,便于拓展功能,进行各类分析、统计、绘图。

本例(视频介绍请移步B站,搜索Up:“星汉长空”,视频:KNIME案例(275)生成Excel工具):

步骤1. 使用KNIME的数据源加载节点(对接Excel文件,txt文本文件,xml,json,py格式文件,数据库等等的节点)读取脚本代码,其中包含了具体业务的算法逻辑。这里是使用了Table Creator节点,模拟输入了一些算法逻辑,是计算球体的公式体系。已知球体的半径和密度,计算球体的直径、周长、体积、重量等等参数。

步骤2. 在KNIME中拖入Cell Splitter节点,对步骤1中读取的python代码进行处理,以“=”分割(公式中一般是以“=”定义赋值表达式),将公式分为“参数名”和“公式内容”两部分。使用Column Expressions节点,对参数名、公式系统的文本加以处理,并生成其对应的Excel坐标参数,比如“A1”,“B1”,将来这些坐标参数信息将指导我们在Excel模板工具内填写相应的内容。

步骤3. 使用Java Snippet和String Manipulation(字符串处理)节点,对python代码加以处理,将其中字典型参数信息替换为坐标位置信息。将Python中的数学函数符号、运算符号等等文本,替换为Excel公式中使用的相应的VBA格式文本。

步骤4(额外分支方案). 在KNIME当中,有一个AF Utilities插件,其中有一个Evaluate Excel Formula节点。将步骤3获取的Excel形式的公式以及原始表格数据合并起来,一起输入到该节点当中,就可以直接在KNIME里计算出相应的结果。

步骤5. 将公式内容,参数名所对应的坐标位置信息(如“A1”,“B1”),通过连接Expand Well Position节点,转变为相应的行列编号对(如(1,1),(2,1)),这在下一个步骤,我们使用xlwt python库往Excel模板工具里写信息,将起到极大的辅助作用。

步骤6. 使用工作簿的write函数,通过行列编号对,往Excel模板工具中写入文本信息;同时借助xlwt.Formula,可以写入公式。这样就自动化地依据python代码生成了相应的Excel工具。最后,将Excel工具交付给业务人员使用,他们可以在Excel环境下进一步发挥。


解释1. 何为KNIME?KNIME数据分析平台是一款强大开源的数据挖掘软件平台,可以固化数据处理的流程,在人与人,人与机器之间进行传递。

解释2. 当一切流程固化以后,IT人员貌似就没有什么工作可做了,是不是这样呢?实则不然,实际的需求是千变万化、异常复杂的,业务逻辑的计算逻辑主要由业务人员完成,但也需要IT人员的协助,有些复杂的计算,库的调用,还是需要IT人员参与的,他们之间的协作关系会变得更加紧密。同时,工作流也不是一成不变的,当需求发生变更的时候,工作流的搭建,工作流功能的拓展,都需要IT人员帮助,他们可以把时间和精力发挥到更能有效产生价值的领域当中去。人员之间,人与机器之间的联系更加紧密,解决需求的效率将大大提升。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值