捕获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筛选与预定义架构不匹配的数据行