0

У меня возникают проблемы при преобразовании десятичных значений в varchar через Informatica 9.1. И мой источник, и цель находятся в Oracle. Он автоматически уменьшает значение цифры на «0,01», когда я использую функцию усечения. Мой исходный тип данных - сумма (десятичная (38,15)); Я использую следующее выражение, чтобы преобразовать его в строку после того, как я усекаю его следующим образом: TO_CHAR (TRUNC (Amount, 2)). SourceInformatica Powerecenter 9.1.0 Decimal Scale Issue

Мой целевой тип данных - varchar (255). И ниже - привязка данных к цели. Для суммы 9,52 после усечения значение изменилось на 9.51, как видно на снимке. Target

Может ли кто-нибудь помочь разобраться в проблеме?

+0

Это не кажется правильным! вы уверены, что в этой области нет другой логики? – Samik

+0

Помимо усечения значения, такого как TRUNC (Amt, 2), а затем преобразования его в varchar; логики нет. –

ответ

1

Возможно, это может повлиять на то, как вы просматриваете свои данные. Например, предположим, что ваше значение 9.5185 - при просмотре в клиентском инструменте оно будет отображаться округленным до 9,52. В то время как функция TRUNC отключит последние цифры, оставив ее равной 9,51.

+0

Как я уже говорил, значение, которое исходит от источника, составляет 9.520000000000000, и за исключением усечения его до 2 десятичных знаков и преобразования его в varchar нет другой логики. –

+0

Откуда вы знаете значение 9.520000000000000? Как вы его просматриваете/проверяете? Некоторые приложения выполняют неявное округление перед отображением значений. – Maciejg

1

Maciej, скорее всего, прав ... во многих приложениях, которые представлены как 9.52, фактически хранится 9.51999999999. Могли бы вы сделать нам одолжение и усечь до 10 мест вместо 2 и опубликовать результат?

0

Как указано выше, так работает функция to_char и как обрабатывается число раунд в Informatica. Это может помочь, если вы хотите больше «точности» и имеет меньше округления

С Informatica Руководства PowerCenter:

Интеграция Service PowerCenter преобразует десятичные порты с точности больше, чем 15 к двойному и возвращает TO_CHAR значения в научные обозначения.

Чтобы избежать этого, вы должны включить высокую точность. При включении высокой точности, PowerCenter поддерживает десятичную до точности 28.

Примечания высокой точности флажка в рабочий процесс при закладке propety

Чтобы устранить эту проблема, выберите обеспечивают высокую точность для сессии следующим образом:

В диспетчере рабочих процессов откройте задачу сеанса для редактирования. Перейдите на вкладку «Свойства». Выберите опцию Включить высокую точность. Закройте сеанс и сохраните.

PowerCenter session using TO_CHAR on decimal field