我遇到了一个我正在努力解决的挑战,如果SSIS适合我的问题,我无法从文档或示例中解决问题。
我有2张桌子(工作和任务)。工作代表了很大的工作,而任务则与工作挂钩。通常会有从每个作业1个任务到每个作业1,000,000个任务的任何内容。每个任务都有一个存储job_id的列。作业表中的job_id是主键。
每隔N小时,我想做以下事情:
获取自上次运行以来已完成作业的所有作业行(基于具有end_time值且该值在从现在到上次运行之间的时间内)并将这些添加到作业列在'查询'数据库中。
将具有job_id的所有任务从步骤1中包含的作业复制到“查询”数据库的任务列中。
基本上,我希望能够定期更新我的查询数据库,但我只想包括已完成的作业(因此需要end_time)和来自这些已完成作业的任务。
这可能每天进行2到3次,以便用户能够查询实时数据的近乎最新的副本。
SSIS是否适合此任务,如果是这样,您能否请一些文档说明1步结果中的列用作第2步的标准?
提前致谢...
答案 0 :(得分:0)
当然SSIS可以做到这一点。
如果要确保移动子记录,请使用查询数据流来查找第二个数据流。您将记录插入第一个数据流中的主表。然后使用一个查询来选择源子表中不在目标子表中且在父目标表中有记录的任何记录。通过这种方式,您也可以捕获对现有已关闭记录的任何更改(您知道会有一些更改,有些人会过早关闭作业并重新打开并向其添加内容。)
或者,您可以将要移动的记录添加到临时表中。然后在为子表执行数据流时加入该表。这将确保您移动的记录与填充子表的记录完全相同。
或者如果您在非规范化数据仓库中,只需编写一个连接父表和子表的查询以及结束日期的where子句不为空。当然不要忘记检查当前不在数据仓库中的记录。