捕获Talend中的数据错误

捕获Talend中的数据错误,talend,Talend,我有一些数据偶尔会出现错误,需要检查/验证,而不是加载到目标系统 我该怎么做?例如: 输入: Local number ------------ 789-523 输出: LocalNumber ------------ 789-523 这种价值需要验证。最后应该还有一个号码。如何在输入文件中获取此类值并将其放在单独的文件中进行验证?大多数输出组件都有“拒绝”连接器。使用此连接器,您可以获得错误代码、错误消息和错误记录 或者,您可以使用tSchemComplianceCheck组件获取与架构相

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

我该怎么做?例如:

输入:

Local number
------------
789-523
输出:

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

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

大多数输出组件都有“拒绝”连接器。使用此连接器,您可以获得错误代码、错误消息和错误记录


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

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

例如,您可能有以下数据:

.--+-----+-----------+--------------------+--------+-----.
|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数据管理控制台。快速作业可能如下所示:

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

然后,这会将一些列添加到模式中,包括电话号码是否有效以及标准化输出

然后,我们使用tMap筛选电话号码是否有效,同时用提供的标准化电话号码(在本例中为国际格式电话号码)替换该号码:

在此之后,我们可以使用查找来查找有效的美国州列表,并将其内部连接到tMap中,以检查该州是否有效。我们还借此机会获得州全名:

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

如果您希望验证更基本的内容,例如数据的元数据(例如,列的长度或数据类型),则可以使用tSchemaComplianceCheck筛选与预定义架构不匹配的数据行