SSIS派生列计算问题

时间:2013-10-07 14:57:33

标签: sql ssis calculated-field

我遇到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计算,但这将是我最后的解决方案。

1 个答案:

答案 0 :(得分:0)

如果其他人遇到此问题 - 我找不到解决方案但确实实施了解决方法 -

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

  1. 使用派生列组件来创建变量并将其设置为0
  2. 添加数据转换并将其切换为所需的数据类型(在本例中为float)
  3. 添加OLE DB命令以调用存储过程进行计算,输出参数填充在第1点创建的变量。