首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有批处理ID的SSIS类型2

带有批处理ID的SSIS类型2
EN

Stack Overflow用户
提问于 2022-02-22 07:50:26
回答 2查看 52关注 0票数 -1

我想修改标准的SSIS行为。

EmployeeID是我的业务密钥和标题,名字,姓氏是类型2的属性。我希望BatchLogID能够反映发生更改的时间,否则它将保持不变。

BatchLogID作为int传递给数据流。

EmployeeID,标题,名字,姓氏,BatchLogID,开始日期,结束日期

源数据

101,小姐,简,史密斯,101 --第一次插入

101,小姐,简,史密斯,102进程运行

101,小姐,简,史密斯,103进程运行

101,小姐,简,史密斯,104个进程运行

101,Jane,Brown,105个进程运行--只有在数据发生变化时,我才想更新目标中的批号。

目标数据

101,小姐,简,史密斯,101,101,2000年1月1日,空-第一次插入

101,小姐,简,史密斯,105,105,2000年1月1日,2000年1月5日--随着检测到变化,数据被更新。

101,简夫人,布朗夫人,105,105 2000年1月1日--只有在数据更改为我要更新批号时,才为空。

有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2022-02-22 21:40:08

您可能需要使用以下方法执行增量加载:

  • 查找和派生列
  • 合并连接、条件拆分和派生列
  • 更改数据
  • 表(如果关系数据库系统支持的话)

想了解更多:

https://www.c-sharpcorner.com/article/design-the-full-load-and-delta-load-patterns-in-ssis/

票数 1
EN

Stack Overflow用户

发布于 2022-02-23 08:15:38

使用sql merge命令-必须清洗两次

代码语言:javascript
复制
declare @batchLogID int= 1
MERGE dbo.targetTable AS t
USING dbo.sourceTable AS s `enter code here`
ON (t.[key] = s.[key] and t.endDate is null) 
WHEN MATCHED  and s.[value] <> t.[value] 
THEN UPDATE SET t.enddate = dateadd(ss,-1,cast(cast(getdate() as date) as datetime))
WHEN not MATCHED 
THEN INSERT (key,[col1], [col2], [value], [col3],startdate,BatchLogID) 
    VALUES (s.key,s.[col1], s.[col2], s.[value], s.[col3],cast(getdate() as date),@batchLogID)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71217629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档