繁体   English   中英

源限定符允许值超过 Informatica 中定义的大小

[英]Source qualifier allowing value more than defined size in Informatica

我的一个 informatica session 表现怪异。 对于特定列的精度和比例值分别定义为 17,16 并启用高精度。 根据精度和比例值,它应该允许小数点前只有一位数的数字,但在我的 session 中,它允许小数点前最多 2 位,小数点前 3 位失败,错误为Invalid number 我很困惑为什么它允许 2digits 数字,因为它也应该失败? 例如:精度 17,比例 16 1.4567--允许 12.4567--允许 123.4567--拒绝

除此之外,我观察到在源中,该列的数据类型为数字,但进入源限定符时,同一列的数据类型为十进制。 为什么会发生这种内部转换?

有人可以帮忙吗?

至于问题的第二部分: Source Qualifier转换功能之一是将任何 Source 数据类型转换为 PowerCenter 数据类型。 无论您使用什么源, Source Qualifier都会转换数据类型。 这样,您最终会得到相同的数据类型,并且在 Orace 和 MS SQL 服务器之间进行比较不会有问题。

这就是“12.4567 -- allowed”的情况。 由于您启用了高精度模式,infa 会自动将十进制转换为双精度。 Double 是 8 字节数据。 因此,如果您设置 col(11,9) 并尝试插入 1234567890.1,infa 将失败。
概括 -
如果您指定的精度大于最大位数,则数据集成服务会在高精度模式下将十进制值转换为双精度值。

这是根据 Infa 文档

8 bytes (if high precision is off or precision is greater than 38) 
16 bytes (if precision <= 18 and high precision is on) 
20 bytes (if precision > 18 and <= 28) 
24 bytes (if precision > 28 and <= 38)   

具有声明精度和小数位数的十进制值。 比例必须小于或等于精度。 对于支持高达 38 位精度的转换,精度为 1 到 38 位,比例为 0 到 38。对于支持高达 28 位精度的转换,精度为 1 到 28 位,比例为 0 到28. 如果您指定的精度大于最大位数,数据集成服务将在高精度模式下将十进制值转换为双精度值。

https://docs.informatica.com/data-integration/powercenter/10-2/developer-tool-guide/data-type-reference/transformation-data-types.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM