什么是验证和解析Pentaho水壶复杂领域的最佳方法?
验证连续字段的最佳方法是什么?如果无效,请将其更正为正确的形式?什么是验证和解析Pentaho水壶复杂领域的最佳方法?
最简单的例子是检查电话号码字段(可以不同格式 - > 111-111-1111,(111)111-1111等),我们最好想验证这些和标准化为一种形式(可以说:1111111111)。一种方法是使用过滤器行,然后使用正则表达式,或者我们可以使用数据验证器。但是这只会告诉我们什么样的数据是无效的,但实际上并没有为我们格式化。然后,我们可以使用Javascript修改的值步骤来编写一个js脚本来执行此操作。但我猜测有一个更好的方法(或者我没有遇到过的内置集成)可以做这些基本的验证。还是建议只将包含无效字段的行转储到单独的csv文件中,然后使用脚本分别解析它?
天儿真好
我使用优迈“的字符串替换”来处理这种情况下
可以累计申请规则,从单一的步骤中的字符串消除不良焦 - 这是很容易使用单个字符修复,就像您所描述的一样,最重要的是,它也允许您基于正则表达式进行搜索 - 在一个步骤中,您已经记录了您的标准化并在您的案例中生成了清理输出
,我会创建两个'规则'来取代(
和)
没什么 - 但是,-
是有点棘手;您需要一个规则来删除单个字符,因此您需要知道单个数据字段中的最大数量-
,然后将这多行添加到'替换字符串'步骤中
如果这不合意,考虑“用户定义的Java表达”和replace
一个呼叫,例如:((t0 != null) ? t0.replace("-","") : t0)
正如我所说,每个“修复”是按顺序施加 - 的In stream field
是输入字段名,而Outstream field
是左空指示迪修改字段本身 - 这里是一个更复杂的例子,其中i搜索正则表达式,并没有取代他们,逃避的情况下我逃脱"
双引号:
In stream field Out stream field use RegEx Search Replace with
sc_srcuri N {Internal.Transformation.Filename.Directory}
re_s_sciname Y ["] \\"
re_s_sciname Y .[\x08]
re_s_sciname Y .[\x08]
re_s_sciname Y .[\x08]
re_s_sciname Y [*]
re_s_sciname Y \s*$
re_s_sciname Y ^\s*
通知我正在移除多达三个“从这个特定的字符串中删除'控制码[\x08]
?
我不会在你的发言后面发表*但这只会告诉我们什么样的数据是无效的,但实际上并没有为我们格式化*实际上,当使用正则表达式和组时,你已经完成了一半的格式化操作,确定了您的逻辑组件。在你上面的情况下,你将有三组数字,你将连接成一个。你可以编辑你的问题来增加两三个例子吗?我认为这会使所需变革的复杂性更加明确,并且有人可能会提出具体的建议。 – 2014-10-18 09:47:41
这看起来像一个清晰的正则表达式应用程序。如上所述,我将采用捕获组的正则表达式步骤,然后是筛选器行步骤以筛选出不正确的数据,然后您可以以任何您想要的格式收集组(字符串操作,计算器,用户定义的java表达式,等等。) – nsousa 2014-10-20 08:54:42