0

我在 SSIS 中的派生列计算没有返回正确的值时遇到问题。为了提供一些背景知识,由于溢出问题(已解决),我不得不更改计算的格式,请参见此处 - SSIS - Derived Column Calculation Error

现在,新旧计算在 SSIS 中返回不同的值,即使它们在数学上是相同的,并且在 .net、excel 和 SQL 中执行时返回相同的值。

在.Net -

decimal test1 = Convert.ToDecimal((415 * 415 * 415) * 0.000000030940000);
decimal test2 = Convert.ToDecimal((0.000000030940000 * 415 * 415 * 415));       

两者都返回 2.2113862225

在 SSIS -

test1 = ((415 * 415 * 415) * 0.000000030940000)
test2 = (0.000000030940000 * 415 * 415 * 415)

返回不同的值(test1 = 2.2113862225 和 test2 = 2.211535)

有趣的是,SSIS 将 test1 视为数字 (38,6),将 test2 视为数字 (27,15)....

有没有人遇到过这个问题?

我真的不想重新考虑整个包以使用 .net 计算,但这将是我最后的解决方案。

4

1 回答 1

0

万一其他人有这个问题 - 我没有找到解决方案,但确实实施了解决方法 -

而不是在派生列中进行计算 -

  1. 使用派生列组件重新创建变量并将其设置为0
  2. 添加数据转换并将其切换为所需的数据类型(本例中为浮点型)
  3. 添加一个 OLE DB 命令来调用存储过程来进行计算,输出参数填充在点 1 处创建的变量。
于 2013-10-08T13:00:06.470 回答