【问题标题】:Loading Fact Table + Lookup / UnionAll for SK lookups为 SK 查找加载事实表 + 查找 / UnionAll
【发布时间】:2010-04-29 04:59:19
【问题描述】:

我必须使用 12 次查找维度表来填充 FactTable 以获取 SK,其中 6 次查找不同的 Dim 表,其余 6 次查找到相同的 DimTable(类型 II),查找相同的自然键。

例如:

PrimeObjectID => 查找 DimObject.ObjectID => 获取 ObjectSK

还有其他列也一样

OtherObjectID1 => 查找 DimObject.ObjectID => 获取 ObjectSK

OtherObjectID2 => 查找 DimObject.ObjectID => 获取 ObjectSK

OtherObjectID3 => 查找 DimObject.ObjectID => 获取 ObjectSK

OtherObjectID4 => 查找 DimObject.ObjectID => 获取 ObjectSK

OtherObjectID5 => 查找 DimObject.ObjectID => 获取 ObjectSK

对于这样的多重查找应该如何进入我的 SSIS 包。

现在我正在使用查找 / unionall foreach 查找。有没有更好的方法。

【问题讨论】:

    标签: sql-server ssis lookup surrogate-key fact-table


    【解决方案1】:

    我假设您正在做的是查找,错误被重定向到派生列以设置失败查找的默认值,然后是每个查找/派生列值的联合。这种模式相当普遍,我在早期使用它来帮助调试。然而,由于 union all 在 SSIS 中是一个部分阻塞的组件(即 Union All 在执行时会创建一个新缓冲区,但一旦数据进入就会传递数据),这将降低包的整体效率,因为在数据流中创建新缓冲区的开销。通常,我将对一系列查找进行编码以忽略错误,然后在最后一个之后,我将包含一个派生列组件,该组件对作为查找目标包含的所有列进行默认替换。这允许最有效的数据流通过您的数据流。有关哪些数据流组件正在阻塞或半阻塞的更多信息,请参阅这篇文章:http://sqlblog.com/blogs/jorg_klein/archive/2008/02/12/ssis-lookup-transformation-is-case-sensitive.aspx

    【讨论】:

      【解决方案2】:

      我不明白您为什么要对每个维度进行 2 次查找。

      通常我们首先处理所有维度(使用 TableDifference 组件来推断/过期维度)。

      然后加载事实表,使用业务键对每个维度(按顺序)进行一次查找以找到代理键。

      【讨论】:

        猜你喜欢
        • 2012-04-08
        • 2016-07-24
        • 1970-01-01
        • 1970-01-01
        • 2014-03-09
        • 1970-01-01
        • 2013-04-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多