要注入到ETL作业的业务规则引擎(Pentaho)

要注入到ETL作业的业务规则引擎(Pentaho),pentaho,etl,rule,business-rules,Pentaho,Etl,Rule,Business Rules,我们使用Pentaho作为ETL工具,数据库是Oracle 我们希望将定义业务规则的能力赋予最终用户,最终用户将在ETL的选定阶段执行给定的转换 因此,用户将在UI上定义一些规则。我将创建一个包含许多下拉列表的UI,以定义特定类型的规则,例如: “范围”规则,列应在该范围内 “不为空”规则:如果字段值为空,则将其更改为未知或 “计数规则”如果总行数按给定百分比增加,则停止ETL 等 这些规则将被注入到ETL作业中。我们不能硬编码规则 我尝试在Pentaho下使用Drools,但文档几乎不存在(在

我们使用Pentaho作为ETL工具,数据库是Oracle

我们希望将定义业务规则的能力赋予最终用户,最终用户将在ETL的选定阶段执行给定的转换

因此,用户将在UI上定义一些规则。我将创建一个包含许多下拉列表的UI,以定义特定类型的规则,例如:

“范围”规则,列应在该范围内

“不为空”规则:如果字段值为空,则将其更改为未知或

“计数规则”如果总行数按给定百分比增加,则停止ETL 等 这些规则将被注入到ETL作业中。我们不能硬编码规则

我尝试在Pentaho下使用Drools,但文档几乎不存在(在Pentaho下使用), 所以我决定自己实现规则引擎: 我将创建一个UI,它基本上允许定义业务规则,这些规则将转换为SQL语句并存储在数据库中。Pentaho中有一个叫做执行行脚本步骤的东西,它允许执行存储在表中的SQL语句

将业务规则创建为SQL语句的想法似乎不太好,但基于我的研究,我没有其他选择

你知道有什么工具可以像SQL一样创建业务规则吗?总体上有什么建议吗?
谢谢,如果您可以管理的话,执行行脚本步骤非常有用

好的,有时候我限制可伸缩性是为了尽可能地简单

怎么做?

Excel表格(或谷歌电子表格):

为用户创建一个可以输入字段和规则的表。限制可能的输入,让他们犯错误的机会降到最低(如您已经提到的下拉列表)。是的,他们没有无限的可能性,但要确保它能满足他们所有的需求+20%

示例:在我的例子中,最终用户的日期字段最多有3个日期范围(介于this和this之间,或者介于this2和this2之间,或者介于this3和this3之间)。他们总是用一个


从工作表(excel公式)中的行进行SQL查询并不难。仅收集SQL查询列并执行它。它是终端用户的隐藏栏。

在PDI中实现业务规则的方法有很多,我最近也构建了自己的系统。这相当复杂,但我们最终得到了可插入模板、元数据注入和完全由元数据驱动的。美好的(99%用PDI编写,1%用java编写)

流口水不是很好,因为它非常慢。这是drools本身的一个组合功能,PDI drools集成不会太热

还有一些其他的选择,不过你可以看看我的一位同事写的JARE——它附带了一个UI等,并且是从头开始构建的,用于(但不限于)PDI。详情如下:


要查找我构建的扩展框架的详细信息,请参阅我在Skillsmatter上的演讲:

谢谢,我们不打算使用非常复杂的规则引擎。我简要地看了一下视频,您使用的是带有元数据注入的用户定义Java表达式?元数据注入部分似乎有点长时间的工作,是吗?谢谢,我们是——我们是通过代码注入的。直接调用kettle API。然而,在PDI5.2的最新版本中,该步骤支持本机元数据注入,因此更加容易。Matt casters和Diethard Steiner有很好的元数据注入博客文章。我还有一个示例,您可以在PDI中本机评估SQL片段。总有一天我会写博客的!如果你那样做,请告诉我。谢谢