代码之家  ›  专栏  ›  技术社区  ›  DForck42

ssis合并连接2个以上的数据集

  •  2
  • DForck42  · 技术社区  · 14 年前

    我正在开发一个ssis包来修复表中的一些数据。这张桌子看起来像这样:

    CustID FieldID INT_VAL DEC_VAL VARCHAR_VAL DATE_VAL
    1      1       23
    1      2               500.0
    1      3                       David
    1      4                                    4/1/05
    1      5       52369871
    2      1       25
    2      2               896.23  
    2      3                       Allan
    2      4                                    9/20/03
    2      5       52369872
    

    我想把它变成这样:

    CustID FirstName AccountNumber Age JoinDate Balance
    1      David     52369871      23  4/1/05   500.0
    2      Allan     52369872      25  9/20/03  896.23
    

    目前,我已经将SSIS包设置为从源表中拉入数据,对字段id执行条件拆分,然后在每个拆分上生成一个派生列。我的重点是把数据重新连接起来。我想把CustId上的数据连接起来。

    但是,join-merge只允许连接2个数据集,最后我需要连接大约30个数据集。有没有一个好的方法来做到这一点,而不必有一堆合并连接?

    1 回复  |  直到 14 年前
        1
  •  2
  •   Pondlife    14 年前

    这似乎有点尴尬,为什么不在查询中这样做呢?

    select
        CustID,
        max(case when FieldID = 3 then VARCHAR_VAL else null end) as 'FirstName',
        max(case when FieldID = 5 then INT_VAL else null end) as 'AccountNumber',
        max(case when FieldID = 1 then INT_VAL else null end) as 'Age',
        max(case when FieldID = 4 then DATE_VAL else null end) as 'JoinDate',
        max(case when FieldID = 2 then DEC_VAL else null end) as 'Balance'
    from
        dbo.StagingTable
    group by
        CustID
    

    如果源系统是MSSQL,那么可以使用SSIS中的查询,甚至可以在源数据库中创建视图(如果允许的话)。如果没有,则直接将数据复制到MSSQL中的一个staging表中,并从那里查询它。