Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在SSIS中取消激发数据_Sql Server_Ssis_Unpivot - Fatal编程技术网

Sql server 在SSIS中取消激发数据

Sql server 在SSIS中取消激发数据,sql-server,ssis,unpivot,Sql Server,Ssis,Unpivot,我正在尝试使用SSI以以下格式规范化数据: SerialNumber Date R01 R02 R03 R04 ------------------------------------------- 1 9/25/2011 9 6 1 2 1 9/26/2011 4 1 3 5 2 9/25/2011 7 3 2 1 2

我正在尝试使用SSI以以下格式规范化数据:

SerialNumber  Date       R01  R02  R03  R04 
-------------------------------------------
1             9/25/2011  9    6    1    2
1             9/26/2011  4    1    3    5
2             9/25/2011  7    3    2    1
2             9/26/2011  2    4    10   6
每个“R”列代表一小时的读数。R01是凌晨12:00,R02是凌晨1:00,R03是凌晨2:00,R04是凌晨3:00。我想转换数据并以这种格式将其存储在另一个表中(换行以便于阅读):

我在SSIS 2008包中使用unpivot转换来完成大部分工作,但我遇到的问题是根据我使用的值的列将小时添加到日期中。有没有办法在SSIS中实现这一点?请记住,这是大约3000万条记录的一小部分数据,因此性能是一个问题

谢谢你的帮助

  • 创建
    SSIS
    包并添加新的
    数据流任务
    ,然后配置此DFT(
    编辑…
  • 添加新的数据源
  • 添加
    UNPIVOT
    组件并对其进行配置:
  • 添加
    数据转换
    组件:
    临时结果:
    
  • 添加
    派生列
    组件: 对于
    NewData
    derived列,可以使用以下表达式:
    DATEADD(“HOUR”(类型==“R01”?0:(类型==“R02”?1:(类型==“R03”?2:3))),Date)
    <代码>«布尔表达式»?«when_true»:«when_false»
    运算符类似于
    IIF()
    函数(来自VBA/VB),用于计算要添加的小时数:对于“R01”->0小时,“R02”->1小时,“R03”->2小时或其他3小时(对于“R04”)

    结果:

  • SerialNumber  Date                Reading
    -----------------------------------------
    1             9/25/2011 12:00 AM  9    
    1             9/25/2011 1:00 AM   6    
    1             9/25/2011 2:00 AM   1   
    1             9/25/2011 3:00 AM   2   
    
    1             9/26/2011 12:00 AM  4    
    1             9/26/2011 1:00 AM   1    
    1             9/26/2011 2:00 AM   3   
    1             9/26/2011 3:00 AM   5   
    
    2             9/25/2011 12:00 AM  7    
    2             9/25/2011 1:00 AM   3    
    2             9/25/2011 2:00 AM   2   
    2             9/25/2011 3:00 AM   1
    
    2             9/26/2011 12:00 AM  2    
    2             9/26/2011 1:00 AM   4    
    2             9/26/2011 2:00 AM   10   
    2             9/26/2011 3:00 AM   6