过滤SSIS中的源组件

时间:2012-10-23 21:57:55

标签: sql ssis

我们目前要求将财务交易纳入预算数据库以进行报告。目前,我们抓住所有财务记录(慢查询)然后我们抓住所有预算。然后,我们进行合并连接,将财务记录过滤到我们预算的那些。执行此操作的理想方法是首先提取所有预算,将其提供给另一个组件,然后生成一个查询,该查询仅提取所需的事务。

示例:

TableA中的

DatabaseA有一个名为FakeId的标识列。

TableB中的

DatabaseB具有相同的标识列;但是,TableB没有与TableA的一对一映射。相反,“映射”(如果它存在)将是一对一或一。我们希望从TableA DatabaseA FakeId TableB DatabaseB中的SELECT * FROM TableA WHERE FakeId IN (SELECT FakeId FROM DatabaseB.TableB)中获取{{1}}的所有财务记录。

我们无法在这两个SQL服务器之间创建链接服务器,因此执行{{1}}将无效。

谢谢, 保罗

2 个答案:

答案 0 :(得分:2)

正如您所说,您可以使用两个源并使用合并连接转换将它们连接起来。

另一个(更多面向数据仓库的)解决方案是将两个表复制到单独的数据库(通常称为暂存区域),然后使用您提出的查询的变体在数据库级别上执行逻辑。此解决方案还允许您实现索引和其他性能增强技术,以优化集成。

答案 1 :(得分:1)

如果你可以使用SSIS,我认为你可以使用'Lookup'组件:

在SQL Server Integration Services中实现查找逻辑 http://www.simple-talk.com/sql/ssis/implementing-lookup-logic-in-sql-server-integration-services/