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

⚡ 智能摘要

Informatica 中的源限定符转换表示集成服务从关系源或平面文件中读取的行,它允许开发人员覆盖默认查询、筛选、排序和去重该数据。

  • 🧩 自动对象: 每当将关系表或平面文件添加到映射中时,都会自动显示源限定符。ping.
  • ✍️ SQL 覆盖: 自定义查询会替换生成的 SELECT 语句,并且优先于源筛选器和排序端口设置。
  • 🔢 港口顺序: SELECT 列表必须按照端口在转换中出现的顺序命名端口,否则会话可能会失败。
  • 🎯 源过滤器: 筛选条件用于在数据库中删除行,并且必须省略关键字 WHERE。
  • 🔗 单次连接: 来自同一关系数据源的相关表可以在一个源限定符内连接,而无需使用连接器。
  • Less 交通: 推送到源查询中的工作会将较少的行通过网络传输到会话中。

Informatica 中的源限定符转换

什么是源限定符转换?

源限定符转换是一个活动的、已连接的转换,它表示集成服务在会话运行时读取的行。每当关系源或平面文件添加到映射时,都会触发此转换。ping需要使用源限定符转换,设计器会自动添加一个。通过源限定符,您可以定义和覆盖从源获取数据的方式。

该转换还会将源的原生数据类型转换为 Informatica 转换数据类型,因此其后的每个转换都可以使用一组平台无关的类型。

由于源限定符构建的是实际到达数据库的查询,因此它是查找问题时首先要检查的地方。 地图ping 读取的行数或列数超过了实际需要。下面的示例将查询范围缩小到四列。

如何在 Informatica 中修改源限定符

在以下示例中,我们将修改映射的源限定符。ping “m_emp_emp_target”,这样它就不会返回所有列,而是只返回选定的列。

步骤1) 打开地图ping 地图中的“m_emp_emp_target”ping 设计师。地图ping 画布上会显示 EMP 源、SQ_EMP 源限定符和 EMP_TARGET 目标。

地图ping m_emp_emp_target 在 Informatica Map 中打开ping 设计师

步骤2) Double单击“源限定符”转换“SQ_EMP”。这将打开该对象的“编辑转换”窗口。

  1. 单击“属性”选项卡
  2. 点击 SQL 查询修改选项,这将打开一个 SQL 编辑器窗口

“属性”选项卡列出了如下所示的 SQL 查询行。

在选中 SQL 查询行的情况下,打开 SQ_EMP 源限定符的“属性”选项卡。

步骤3) 在 SQL 编辑器窗口中

  1. 输入以下查询
    SELECT  EMPNO,  ENAME,  JOB,  MGR FROM  EMP

    注意: – 我们从源数据中选择了 EMPNO、ENAME、JOB 和 MGR 列,因此在 SELECT 查询中只保留了这些列。

  2. 选择“确定”按钮

SQL 编辑器现在显示的是自定义查询,而不是系统生成的查询。

SQL 编辑器窗口包含源限定符的自定义 SELECT 查询。

步骤4) 在“编辑变换”窗口中,

  1. 从菜单中选择“端口”选项卡
  2. 在“端口”选项卡下,您将看到所有端口。仅保留 EMPNO、ENAME、JOB 和 MGR 端口,并删除其他端口。

“端口”选项卡列出了删除之前转换过程中携带的每个端口。

“编辑转换”窗口的“端口”选项卡列出了所有源限定符端口

步骤5) 删除端口后,单击“确定”按钮。列表中只剩下四个端口。

删除不需要的源限定符端口后,在“端口”选项卡中会显示“端口”选项卡。

现在再次单击“编辑转换”窗口中的“属性”选项卡,您将只会看到您选择的数据。

“属性”选项卡显示了源限定符上已保存的 SQL 查询覆盖。

点击“确定”按钮后,将打开 SQL 编辑器窗口。

  1. 它会确认您选择的数据是否正确,并准备好加载到目标表中。
  2. 点击“确定”按钮继续

确认窗口重复显示接下来要读取的四列内容。

SQL 编辑器窗口在映射之前确认已覆盖的查询。ping 已保存

保存地图ping (使用 Ctrl+S 快捷键)并执行 工作流程执行后,只有选定的列会被加载到目标数据库中。

这样,您就可以在源限定符中覆盖需要从源中提取的列,这也是控制将哪些特定列带入映射的唯一方法。ping.

源限定符的属性

您可以使用源限定符的各种属性来确定需要转换并发送到目标表的源数据类型。

  1. 源过滤器 – 使用“源筛选器”属性可以减少源记录的数量。例如,如果您只想获取部门编号为 10 的员工,可以在“源筛选器”属性中输入筛选条件 deptno=10 并执行数据操作。请在条件中包含表名和端口名,并省略关键字 WHERE – 包含 WHERE 的筛选器会导致会话失败。
  2. 已排序端口数量 – 在源限定符转换中,您还可以按端口位置对输入记录进行排序。集成服务会在默认查询中添加一个 ORDER BY 子句,从转换的顶部开始计数端口,因此数据在到达映射内部的转换时已经排序。ping.

    由于数据可以按单个端口或多个端口排序,因此您必须指定排序时使用的端口数。如果指定值为 1,则仅按 empno 数据排序。如果指定值为 2,则数据将同时按 empno 和 ename 排序。

  3. 选择不同的 您可以使用此属性从源中仅获取不同的记录。选择“选择唯一值”选项后,集成服务会添加一个 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 子句中创建该关系。 源分析器 通过链接两个源定义中匹配的列。

当关系缺失或必须使用外连接时,请改用“用户定义连接”属性。此处输入的条件将替换元数据中保存的连接信息,集成服务会将其附加到生成的查询中。

有两个限制值得记住。两个表必须来自同一个关系数据源,不同类型的数据源(例如平面文件和表,或者两个不同的数据库)必须通过连接来实现。 连接器转型 代替。

源限定符、过滤器和连接器转换

这三个对象都可以减少或合并行,选错对象是导致会话缓慢的常见原因。下表将它们并列列出。

方面 源限定符 滤波器变换 连接器转型
工作进展 在源数据库中,在生成的查询内部 在集成服务中,逐行 在集成服务中,使用缓存
主要目的 读取源行,覆盖查询,筛选,排序,去重 删除不满足任一条件的行 把两个管道合并成一个行集
来源类型 同一数据源的关系表和平面文件 任何管道数据 异构数据源,包括平面文件和不同的数据库
加入支持 内部等值连接或同一关系数据源内的用户自定义连接 没有 普通接缝、主外接缝、细节外接缝和全外接缝
穿过网络的行 仅返回查询结果的行 首先读取每个源行。 首先读取每个源行。

实际操作的原则很简单:尽早进行过滤和合并,并尽可能早地获取所需信息。 筛选 或者仅针对源数据库无法完成的工作使用连接器。将条件推送到源限定符是成本最低的优化方法之一。 性能调优.

常见问题

在集成服务读取源数据库之前,先对源数据库运行预 SQL 命令。在集成服务完成向目标数据库写入数据之后,再对同一数据库运行后 SQL 命令。

Trac级别决定了转换写入会话日志的详细程度。较高的级别有助于诊断意外的行数,但会增加日志大小并降低运行速度,因此之后应降低级别。

SQL 编辑器有一个“验证”按钮。它会针对选定的 ODBC 数据源运行语句,并报告语法是否正确,这样错误就会在设计器中显示,而不是在失败的会话中显示。

是的。查询、用户自定义连接、源筛选器以及会话前和会话后命令中都允许使用参数和变量。字符串参数需要按照源数据库要求的引号格式括起来。

它们声明数据源在每次运行中返回相同的数据及其顺序。当这两个条件都满足时,集成服务将跳过恢复前的数据源暂存步骤,从而缩短运行时间。

不。查询覆盖、用户自定义连接、源过滤器以及会话前或会话后命令都会被推送到数据库中,因此它们适用于关系型数据源。平面文件中的源限定符主要负责控制。 tracing 和港口订单。

AI助手会读取查询计划和工作负载历史记录,从而提出谓词、索引和列修剪建议。现代数据库中基于机器学习的顾问会对这些建议进行排序,但开发人员仍然需要在每次更改应用到会话之前进行验证。

Copilot 可以自动生成 SELECT 语句,并加快重复列列表的处理速度。它无法预知转换的端口顺序,因此在保存之前,请务必在“端口”选项卡中验证生成的语句。

总结一下这篇文章: