2013-10-07 41 views
0

我在SSIS中派​​生列计算没有返回正确值时出现问题。为了给出一些背景知识,由于溢出问题(已解决),我必须更改计算格式,请参阅此处 - SSIS - Derived Column Calculation ErrorSSIS派生列计算问题

现在,旧的和新的计算在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)和t est2作为数字(27,15)....

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

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

回答

0

如果任何人有这个问题 - 我没有找到解决办法,但没有实现一个解决方法 -

而是在派生列做计算 -

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