捕获Talend中的数据错误

时间:2014-12-11 03:19:38

标签: talend

我有一些数据偶尔会有错误需要检查/验证,而不是加载到我的目标系统。

我该怎么做?例如:

输入:

Local number
------------
789-523

输出:

LocalNumber
------------
789-523

这种价值需要验证。最后应该有另一个号码。我如何才能在输入文件中获得此类值并将其放在单独的文件中进行验证?

2 个答案:

答案 0 :(得分:3)

在高级别,您需要使用某些组件定义您认为的数据错误,并使用这些错误来过滤数据。

作为示例,您可能拥有以下数据:

.--+-----+-----------+--------------------+--------+-----.
|id|name |phone      |address             |city    |state|
|=-+-----+-----------+--------------------+--------+----=|
|1 |Bob  |02071234568|165 Lake Tahoe Blvd.|Richmond|MN   |
|2 |Susan|02071234567|345 E Fowler Avenue |Helena  |CA   |
|3 |Jimmy|foobar     |222 Tully Road East |Bismarck|MA   |
|4 |Janet|07811111111|230 Camelback Rd    |Boise   |GB   |
'--+-----+-----------+--------------------+--------+-----'

我在这里使用英国电话号码来查询美国地址'并说明,但那是因为我无法想到任何有用的美国电话号码:)

这里我们要检查电话号码是否有效以及状态是否有效。现在我们只是使用tLogRow将所有内容的结果打印到控制台,但同样可以是任何类型的输出,包括日志文件,数据库甚至是Talend Data Stewardship Console。快速工作可能如下所示:

Data validation job layout

要检查电话号码是否有效(并且还可选择将其标准化为预定义格式),我们可以使用tStandardizePhoneNumber组件:

tStandardizePhoneNumber component

然后,这会在您的架构中添加一些列,包括电话号码是否有效以及标准化输出。

然后我们使用tMap过滤电话号码是否有效,同时用提供的标准化电话号码(在这种情况下是国际格式化的电话号码)替换号码:

tMap to filter valid and invalid phone numbers

在此之后,我们可以使用查找到有效美国州的列表,并在tMap中将其连接到此以检查状态是否有效。我们还利用这个机会获得完整的州名:

tMap to filter valid and invalid US states

这个一般原则适用于如何应用任何数据验证:使用组件或某些逻辑(在tMap或类似tPatternCheck中)来确定数据是否有效然后使用过滤组件(tPatternCheck已经是一个过滤组件)来指导你的输出。

如果您正在寻找更多基本内容,例如数据的元数据,例如列的长度或数据类型,那么您可以使用tSchemaComplianceCheck来过滤不需要的数据行匹配预定义的架构。

答案 1 :(得分:0)

大多数输出​​组件都使用“拒绝”连接器,您将收到错误代码和错误消息以及错误记录。

或者您可以使用tSchemComplianceCheck组件来获取与架构相关的错误。