查找转换
查找转换通过联接输入列中的数据和引用数据集中的列来执行查找。可以使用该查找在基于通用列的值的相关表中访问其他信息。
引用数据集可以是缓存文件、现有的表或视图、新表或 SQL 查询的结果。查找转换使用 OLE DB 连接管理器或缓存连接管理器来连接到引用数据集。有关详细信息,请参阅 OLE DB 连接管理器和缓存连接管理器。
可以用以下方式来配置查找转换:
选择要使用的连接管理器。如果要连接到数据库,请选择 OLE DB 连接管理器。如果要连接到缓存文件,请选择缓存连接管理器。
指定包含引用数据集的表或视图。
通过指定 SQL 语句来生成引用数据集。
指定输入和引用数据集间的联接。
将引用数据集的列添加到查找转换输出中。
配置缓存选项。
查找转换支持适用于 OLE DB 连接管理器的以下数据库访问接口:
SQL Server
Oracle
DB2
查找转换试图在转换输入的值和引用数据集的值之间执行同等联接。(同等联接意味着转换输入中的每一行都至少要与引用数据集中的一行匹配。)如果无法实现同等联接,则查找转换会执行下列操作之一:
如果引用数据集中没有匹配项,则不会发生联接。默认情况下,查找转换将没有匹配项的行视为错误。但是,您可以将查找转换配置为将这些行重定向到无匹配输出。有关详细信息,请参阅查找转换编辑器(“常规”页)和查找转换编辑器(“错误输出”页)。
如果引用表中有多个匹配项,则查找转换只返回查找查询返回的第一个匹配项。如果发现多个匹配项,则仅当转换被配置为将所有引用数据集加载到缓存中时查找转换才生成错误或警告。在这种情况下,如果查找转换在填充缓存时检测到多个匹配项,则该查找转换将生成警告。
联接可以是组合联接,即可以将转换输入中的多个列联接到引用数据集中的列。除了 DT_R4、DT_R8、DT_TEXT、DT_NTEXT 或 DT_IMAGE 外,转换支持联接其他任何数据类型的列。有关详细信息,请参阅 Integration Services 数据类型。
通常,将来自引用数据集的值添加到转换输出中。例如,查找转换可以使用输入列的值从表中提取产品名,然后将产品名添加到转换输出中。来自引用表的值可以替换列值,也可以添加到新列中。
查找转换执行的查找区分大小写。因此,为了避免因数据中大小写不同而导致查找失败,首先请使用字符映射转换将数据转换为大写或小写。然后在生成引用表的 SQL 语句中包含 UPPER 或 LOWER 函数。有关详细信息,请参阅字符映射表转换、UPPER (Transact-SQL) 和 LOWER (Transact-SQL)。
查找转换具有以下输入和输出:
输入。
匹配输出。匹配输出处理转换输入中那些在引用数据集内至少有一个匹配项的行。
无匹配输出。无匹配输出处理输入中在引用数据集内没有任何匹配项的行。如果将查找转换配置为将无匹配项的行视为错误,则这些行会重定向到错误输出。否则,转换会将这些行重定向到无匹配输出。
注意 在 SQL Server 2005 Integration Services (SSIS) 中,查找转换只有一个输出。有关如何运行在 SQL Server 2005 中创建的查找转换的详细信息,请参阅升级查找转换。
错误输出。
缓存引用数据集
内存缓存存储引用数据集以及为数据创建索引的哈希表。缓存保留在内存中,直到包执行完成。您可以将缓存保留到缓存文件中 (.caw)。
将缓存保留到文件中时,系统加载缓存的速度会更快。这可以提高查找转换和包的性能。请注意,使用缓存文件时,您使用的数据不如数据库中的数据新。
下面是将缓存保留到文件中的其他好处:
在多个包中共享缓存文件。有关详细信息,请参阅如何在完全缓存模式下使用缓存连接管理器来实现查找转换.
使用包部署缓存文件。***随后即可在多台计算机上使用该数据。***有关详细信息,请参阅如何为查找转换创建和部署缓存文件。
使用原始文件源从缓存文件中读取数据。随后即可使用其他数据流组件来转换或移动数据。有关详细信息,请参阅原始文件源。
注意 缓存连接管理器不支持使用原始文件目标创建或修改的缓存文件。
通过使用文件系统任务对缓存文件执行操作和设置属性。有关详细信息,请参阅文件系统任务。
下面列出了各种缓存选项:
在查找转换运行之前,通过使用表、视图或 SQL 查询生成引用数据集并将该引用数据集加载到缓存中。您可以使用 OLE DB 连接管理器访问该数据集。
此缓存选项与 SQL Server 2005 Integration Services (SSIS) 中查找转换的完全缓存选项兼容。
在查找转换运行之前,从数据流中的已连接数据源或从缓存文件生成引用数据集并将该引用数据集加载到缓存中。您可以使用缓存连接管理器并根据需要使用缓存转换来访问该数据集。有关详细信息,请参阅缓存连接管理器和缓存转换。
在执行查找转换过程中,通过使用表、视图或 SQL 查询生成引用数据集。在引用数据集中有匹配项的行以及在该数据集中没有匹配项的行都会加载到缓存中。
超出缓存的内存大小后,查找转换会自动从缓存中删除最不常使用的行。
此缓存选项与适用于 SQL Server 2005 Integration Services (SSIS) 中的查找转换的部分缓存选项兼容。
在执行查找转换过程中,通过使用表、视图或 SQL 查询生成引用数据集。没有缓存数据。
此缓存选项与 SQL Server 2005 Integration Services (SSIS) 中查找转换的无缓存选项兼容。
Integration Services 和 SQL Server 在比较字符串时所用的方式不同。如果查找转换配置为在查找转换运行之前将引用数据集加载到缓存中,则 Integration Services 将在缓存中执行查找比较。否则,查找操作将使用参数化 SQL 语句并且 SQL Server 将执行查找比较。这意味着,根据缓存类型的不同,查找转换可能会从同一查找表中返回不同数量的匹配项。
查找转换故障排除
对于已配置为不加载任何引用数据集到缓存中的查找转换,当查找操作与包含 null 值的列匹配时,该查找转换会失败。为了避免这种失败,请手动更新 SQL 语句以包括 OR ISNULL(ColumnName) 条件。如果查找转换配置为在查找转换运行之前将引用数据集加载到缓存中,则查找操作将成功。
注意 |
---|
请尽可能避免在查找操作中使用可能包含 null 值的列。如果列包含 Null 值,请将查找转换配置为使用错误输出,此错误输出将引用表中没有匹配行的行定向到单独的转换输出。另外,也可以考虑使用支持对 Null 值进行查找操作的完全缓存。 |
可以记录查找转换对外部数据访问接口所做的调用。借助这项新的日志记录功能,您可以对查找转换执行的从外部数据源填充缓存的操作进行故障排除。若要记录查找转换对外部数据访问接口所做的调用,请在包级别启用包日志记录并选择**“诊断”**事件。有关详细信息,请参阅包执行故障排除。
配置查找转换
可以通过 SSIS 设计器或以编程方式来设置属性。
有关可以在查找转换编辑器对话框中设置的属性的详细信息,请单击下列主题之一:
有关可以设置的其他属性的详细信息,请单击下列主题之一:
有关如何设置属性的详细信息,请单击下列主题之一:
外部资源
msdn.microsoft.com 上的视频 How to: Implement a Lookup Transformation in Full Cache Mode(如何在完全缓存模式下实现查找转换)
blogs.msdn.com 上的博客项 Best Practices for Using the Lookup Transformation Cache Modes(使用查找转换缓存模式的最佳实践)
blogs.msdn.com 上的博客项 Lookup Pattern: Case Insensitive(查找模式:不区分大小写)
|