2017-06-21 39 views
0

ODI中是否存在错误处理机制? 我想处理的情况下,ODI可以将不良数据加载到错误表中,因为它无法执行转换源数据并插入到目标表中。即使传入数据格式中有任何更改,该进程也不会停止。Oracle Data Integrator(ODI)错误处理

回答

0

大多数集成知识模块(IKM)都有一个选项来启用或禁用流量控制。启用流量控制时,将执行以下主要步骤:

  • 数据将首先插入到与目标表具有相同结构的临时表中。这些表的默认前缀为I$_
  • 将检查模型中为目标数据存储定义的所有条件(约束)。
  • 条件失败的行将被插入到错误表中,其中包含一些关于加载时间,已断开的条件和行的所有数据的信息。这些表格的前缀为E$_
  • 通过条件的行将被插入/更新到目标表中。

不用说,启用流量控制将影响您的加载性能,因为有额外的插入和一些条件检查。但是,如果需要捕捉数据质量问题,这是一个很容易实现的强大功能。

+1

除了JeromeFr所说的内容:您还可以指定接口在什么情况下会引发错误。在“控件”选项卡中,有一个带有标签“允许的最大错误数”的文本框,并带有百分比复选框。在这里,您可以在停止接口或错误行占总行数的百分比之前设置错误的行数。 –

+0

如果目标列需要一个数字,并且它是否接收到一个字符,是否可以将其存储在错误表中。我问,因为错误表与目标表具有相同的结构,因此如果目标表列被定义为数字,那么how我们可以跟踪具有字符值的行吗? –

+0

这会有点棘手。我看到了两个解决方案。 您可以在第一次运行创建数据库后修改E $ _表,并将其设置为VARCHAR2(4000)。然后在您的模型中,在目标数据存储中的该列上添加Check Condition。该条件将检查varchar中只有数字与'REGEXP_LIKE(X,'^ [[:digit:]] + $')'类似。如果需要,您还可以添加点或逗号。 另一种选择是在映射中自己捕获这类数据质量问题,并使用拆分组件加载手动创建的错误表。 – JeromeFr

相关问题