在源表中,有两列,如下快照所示:
那么对于目标表,它应该是这样的:
(“DimLocationKey”是自动生成的代理键)
如何在SSIS中实现自引用效果?我尝试了以下方法,但它不起作用,因为查找中没有匹配项。
如果该列可为空,则您可以加载 location_ID 的唯一值,然后让辅助进程返回并负责更新现有的并可能添加新的。
Pass 1
1 NULL A NULL
2 NULL B NULL
3 NULL C NULL
4 NULL D NULL
我想如果它不可为空,那么您可以在数据流中预先计算这些 id 并将当前行和父级分配给它们自己。作为一名开发人员,我可能会因此讨厌你;)
Pass 2
此时,问题就变成了表中应该有 8 行还是 4 行(无论源数据指示什么)。这成为商业用户的一个问题,被适当地“简化”。我在我的层级问题中看到了这两个答案——“总统向谁汇报?”在一个地方,总统不向任何人报告,这意味着费用请求会自动获得批准。不同的地方是首席执行官向自己汇报,这意味着他们的费用报告仍然必须由他们自己批准。我想这是为了确保他们有行政责任,因为没有什么是自动的。
如果答案是 8 行,那么您的数据流看起来就差不多了。如果是 4,那么您将使用现有数据流,但更新行。如果它是一小部分行(数百行),那么您可以使用 OLEDB 命令并编写更新语句。只需意识到它将为命中该组件的每一行发出一个 UPDATE 语句。这可能会使您的处理陷入停滞,因为效率极低。
更有效的更新途径是使用 OLE DB 目标,并在数据流完成后让执行 SQL 任务发出基于集合的 UPDATE 语句。参见安迪伦纳德的集成服务的阶梯系列中有一个关于如何执行此操作的写得很好的示例。
如果它不可为空并且不允许节点引用自身,那么您的数据模型似乎没有准确描述
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)