【问题标题】:Informatica Powerecenter 9.1.0 Decimal Scale IssueInformatica Powercenter 9.1.0 小数刻度问题
【发布时间】:2017-01-24 08:01:15
【问题描述】:

我在通过 Informatica 9.1 将十进制值转换为 varchar 时遇到问题。我的源和目标都在 Oracle 中。 当我使用截断函数时,它会自动将数字的值减少“0.01”。 我的源数据类型是 Amount(Decimal(38,15));在截断后,我使用以下表达式将其转换为字符串:TO_CHAR(TRUNC(Amount,2))。 Source

我的目标数据类型是 varchar(255)。下面是目标中的数据快照。 对于截断后的 9.52 量,该值更改为 9.51,如快照所示。 Target

谁能帮忙解决这个问题?

【问题讨论】:

  • 这似乎不对!你确定那个领域没有其他逻辑吗?
  • 除了截断像 TRUNC(Amt,2) 这样的值,然后将其转换为 varchar;没有逻辑。

标签: oracle decimal type-conversion truncate informatica-powercenter


【解决方案1】:

这可能只是您查看数据的方式的影响。例如,假设您的值为 9.5185 - 在客户端工具中查看时,它将显示为四舍五入为 9.52。而 TRUNC 函数将切断最后一位数字,将其保留为 9.51。

【讨论】:

  • 正如我之前所说,来自源的值是 9.520000000000000,除了将其截断到小数点后 2 位并将其转换为 varchar 之外,没有其他逻辑。
  • 你怎么知道值是9.520000000000000?您查看/检查它的方式是什么?一些应用程序在显示值之前会进行隐式舍入。
【解决方案2】:

Maciej 很可能是对的……在许多应用程序中,表示为 9.52 的内容实际上存储为 9.51999999999。您能否帮我们一个忙,将结果截断为 10 个而不是 2 个并发布结果?

【讨论】:

    【解决方案3】:

    如前所述,to_char 函数的行为方式以及 Informatica 中如何处理数字舍入。 如果您想要更高的“精度”并减少舍入,这可能会有所帮助

    来自 Informatica PowerCenter 指南:

    PowerCenter 集成服务将十进制端口与 大于 15 的精度为双精度并返回 TO_CHAR 值 科学记数法。

    为避免这种情况,您必须启用高精度。当您启用高 精度,PowerCenter 支持精度高达 28 位的小数。

    注意高精度是属性选项卡下工作流程中的一个复选框

    要解决此问题,请为会话选择启用高精度,如下所示:

    在 Workflow Manager 中,打开会话任务进行编辑。 单击属性选项卡。 选择启用高精度选项。 关闭会话并保存。

    PowerCenter session using TO_CHAR on decimal field

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-04
      • 1970-01-01
      相关资源
      最近更新 更多