Informatica 中的源限定符转换与示例

什么是源限定符转换?
源限定符转换是一个活动的、已连接的转换,它表示集成服务在会话运行时读取的行。每当关系源或平面文件添加到映射时,都会触发此转换。ping需要使用源限定符转换,设计器会自动添加一个。通过源限定符,您可以定义和覆盖从源获取数据的方式。
该转换还会将源的原生数据类型转换为 Informatica 转换数据类型,因此其后的每个转换都可以使用一组平台无关的类型。
由于源限定符构建的是实际到达数据库的查询,因此它是查找问题时首先要检查的地方。 地图ping 读取的行数或列数超过了实际需要。下面的示例将查询范围缩小到四列。
如何在 Informatica 中修改源限定符
在以下示例中,我们将修改映射的源限定符。ping “m_emp_emp_target”,这样它就不会返回所有列,而是只返回选定的列。
步骤1) 打开地图ping 地图中的“m_emp_emp_target”ping 设计师。地图ping 画布上会显示 EMP 源、SQ_EMP 源限定符和 EMP_TARGET 目标。
步骤2) Double单击“源限定符”转换“SQ_EMP”。这将打开该对象的“编辑转换”窗口。
- 单击“属性”选项卡
- 点击 SQL 查询修改选项,这将打开一个 SQL 编辑器窗口
“属性”选项卡列出了如下所示的 SQL 查询行。
步骤3) 在 SQL 编辑器窗口中
- 输入以下查询
SELECT EMPNO, ENAME, JOB, MGR FROM EMP
注意: – 我们从源数据中选择了 EMPNO、ENAME、JOB 和 MGR 列,因此在 SELECT 查询中只保留了这些列。
- 选择“确定”按钮
SQL 编辑器现在显示的是自定义查询,而不是系统生成的查询。
步骤4) 在“编辑变换”窗口中,
- 从菜单中选择“端口”选项卡
- 在“端口”选项卡下,您将看到所有端口。仅保留 EMPNO、ENAME、JOB 和 MGR 端口,并删除其他端口。
“端口”选项卡列出了删除之前转换过程中携带的每个端口。
步骤5) 删除端口后,单击“确定”按钮。列表中只剩下四个端口。
现在再次单击“编辑转换”窗口中的“属性”选项卡,您将只会看到您选择的数据。
点击“确定”按钮后,将打开 SQL 编辑器窗口。
- 它会确认您选择的数据是否正确,并准备好加载到目标表中。
- 点击“确定”按钮继续
确认窗口重复显示接下来要读取的四列内容。
保存地图ping (使用 Ctrl+S 快捷键)并执行 工作流程执行后,只有选定的列会被加载到目标数据库中。
这样,您就可以在源限定符中覆盖需要从源中提取的列,这也是控制将哪些特定列带入映射的唯一方法。ping.
源限定符的属性
您可以使用源限定符的各种属性来确定需要转换并发送到目标表的源数据类型。
- 源过滤器 – 使用“源筛选器”属性可以减少源记录的数量。例如,如果您只想获取部门编号为 10 的员工,可以在“源筛选器”属性中输入筛选条件 deptno=10 并执行数据操作。请在条件中包含表名和端口名,并省略关键字 WHERE – 包含 WHERE 的筛选器会导致会话失败。
- 已排序端口数量 – 在源限定符转换中,您还可以按端口位置对输入记录进行排序。集成服务会在默认查询中添加一个 ORDER BY 子句,从转换的顶部开始计数端口,因此数据在到达映射内部的转换时已经排序。ping.
由于数据可以按单个端口或多个端口排序,因此您必须指定排序时使用的端口数。如果指定值为 1,则仅按 empno 数据排序。如果指定值为 2,则数据将同时按 empno 和 ename 排序。
- 选择不同的 您可以使用此属性从源中仅获取不同的记录。选择“选择唯一值”选项后,集成服务会添加一个 SELECT DISTINCT 语句,因此源限定符只会获取源数据的不同组合。
下面显示的“属性”选项卡包含这些选项以及属性列表的其余部分。
下表总结了关系型源限定符上可用的完整属性列表。
| 特性 | 它做什么 |
|---|---|
| SQL查询 | 替换集成服务生成的默认查询。自定义查询会覆盖用户定义的连接和源筛选器。 |
| 用户自定义连接 | 提供用于连接来自多个由同一源限定符表示的数据源的数据的条件。 |
| 源过滤器 | 提供集成服务在查询行时应用的筛选条件。 |
| 已排序端口数量 | 用于对从关系数据源读取的行进行排序的列数,作为 ORDER BY 添加到查询中。 |
| Tracing 级别 | 本次转换写入会话日志的详细程度。 |
| 选择不同的 | 通过在查询中添加 SELECT DISTINCT,仅返回唯一行。 |
| 预 SQL | 在集成服务读取源数据库之前,会先对源数据库运行命令。 |
| 后 SQL | 集成服务将数据写入目标数据库后,将对源数据库运行命令。 |
| 输出是确定性的 | 声明当输入一致时,数据源在两次运行中返回相同的数据。 |
| 输出结果可重复 | 声明源在两次运行之间按相同的顺序返回行,这使得集成服务可以跳过恢复的暂存过程。 |
源限定符 SQL 覆盖的规则和指南
SQL 覆盖功能非常强大,因为它会替换设计器生成的所有内容,这也是为什么当忽略以下规则时,它会悄无声息地崩溃的原因。
- 先连接端口。 在输入查询之前,请连接您打算使用的每个输入和输出端口,因为生成的查询是根据连接的端口构建的。
- SELECT 列表按端口顺序排列。 SELECT 语句必须按照端口名称在转换中出现的顺序列出它们。如果顺序不匹配,会话可能会失败或返回意外结果。
- 对每一列进行限定。 每个列名必须以它所属的表、视图或同义词作为前缀,例如 ORDERS.ORDER_ID。
- 先生成再编辑。 单击“生成 SQL”会显示默认查询,其中已经包含源筛选器和 sorted-ports 子句,因此可以从工作语句构建覆盖。
- 验证该语句。 SQL 编辑器有一个“验证”按钮,它会在会话开始之前运行查询并报告语法是否正确。
- 引用保留字词。 查询中使用的任何数据库保留字都必须用引号括起来。
- 注意先例。 自定义查询会覆盖源筛选器和排序端口的数量,并且需要在 SQL 查询中输入以下内容: 会议 属性会覆盖映射中定义的筛选条件和查询。ping.
对于 Microsoft SQL Server 来源中还有一条额外的规则:SELECT 语句中的列数必须与转换中的端口数匹配,否则在获取行时会话将失败。
如何使用一个来源限定符连接两个来源
单个源限定符可以读取多个表。当来自同一关系源的两个相关表链接到同一个源限定符时,集成服务会在源查询内部连接它们,而不是在映射内部连接。ping这意味着数据库会完成这项工作,而发送到会话中的行数会减少。
默认连接是内部等值连接,写在 WHERE 子句中,形式为 Source1.column_name = Source2.column_name。要生成此连接,连接的列必须具有主键-外键关系,并且数据类型必须匹配。如果导入的元数据不包含此类关系,则可以在 WHERE 子句中创建该关系。 源分析器 通过链接两个源定义中匹配的列。
当关系缺失或必须使用外连接时,请改用“用户定义连接”属性。此处输入的条件将替换元数据中保存的连接信息,集成服务会将其附加到生成的查询中。
有两个限制值得记住。两个表必须来自同一个关系数据源,不同类型的数据源(例如平面文件和表,或者两个不同的数据库)必须通过连接来实现。 连接器转型 代替。
源限定符、过滤器和连接器转换
这三个对象都可以减少或合并行,选错对象是导致会话缓慢的常见原因。下表将它们并列列出。
| 方面 | 源限定符 | 滤波器变换 | 连接器转型 |
|---|---|---|---|
| 工作进展 | 在源数据库中,在生成的查询内部 | 在集成服务中,逐行 | 在集成服务中,使用缓存 |
| 主要目的 | 读取源行,覆盖查询,筛选,排序,去重 | 删除不满足任一条件的行 | 把两个管道合并成一个行集 |
| 来源类型 | 同一数据源的关系表和平面文件 | 任何管道数据 | 异构数据源,包括平面文件和不同的数据库 |
| 加入支持 | 内部等值连接或同一关系数据源内的用户自定义连接 | 没有 | 普通接缝、主外接缝、细节外接缝和全外接缝 |
| 穿过网络的行 | 仅返回查询结果的行 | 首先读取每个源行。 | 首先读取每个源行。 |
实际操作的原则很简单:尽早进行过滤和合并,并尽可能早地获取所需信息。 筛选 或者仅针对源数据库无法完成的工作使用连接器。将条件推送到源限定符是成本最低的优化方法之一。 性能调优.








