Informatica中的映射:创建、组件、参数、变量
什么是映射?
映射是源对象和目标对象的集合,它们通过一组转换连接在一起。这些转换包含一系列规则,用于定义数据流以及数据如何加载到目标对象中。
映射包含以下一组对象
- 源定义 – 源定义定义了源的结构和特征、其底层数据类型、数据源类型等。
- 转换 – 转换对象定义了源数据如何被转换,以及在处理过程中可以应用哪些各种函数。
- 目标定义 – 目标定义了数据最终加载的目标。
- 链接 – 链接将源定义连接到不同的转换和目标表。它定义了数据如何从源流向目标以及经过哪些转换。
为什么需要映射?
映射是Informatica中的一个对象,通过它可以定义源数据在到达目标对象之前是如何被修改的。例如,如果源系统中您的员工姓名是“Bill Clinton”,而目标系统要求员工姓名格式为“Clinton Bill”,则此类操作可以在映射级别进行设计。简单来说,您对源数据所做的操作是在映射级别定义的。
映射是Informatica中的基本对象,通过它可以定义数据转换的详细信息以及源/目标对象的特征。映射帮助我们为每一行定义单个列级别的数据转换。即使在单个映射中,您也可以处理多个源和目标。
映射的组件
映射的基本组件是
- 源表
- 映射参数和变量
- 目标对象
- 映射转换
构成映射的各种对象有很多。一个映射可以包含源、目标、映射参数和变量、映射组件(mapplets)、各种转换以及用户定义函数。
- 映射源:映射源是您从中获取源数据的对象。它可以是数据库表、平面文件、XML源或COBOL文件源。
- 映射目标:映射目标是我们最终处理的数据加载的目的对象。映射目标可以是数据库的关系表、平面文件或XML文件。源和目标在任何映射中都是必需的,它们的类型可以不同。
- 映射参数和变量:映射参数和变量帮助您创建临时变量对象,这些对象有助于在映射数据处理过程中定义和存储临时值。映射参数和变量是可选的用户定义数据类型,可以为映射创建,也可以在特定要求下引用和更新。在本节中,我们将更详细地介绍映射参数和变量。
- 映射组件(Mapplets):它们是由一组转换、源或目标组成的。映射组件通常是为了重用一组转换的现有功能而创建的。它可以用于任意数量的映射。
什么是暂存映射?
暂存映射是在其中创建源表副本的映射。例如,在生产系统中,如果您有一个“employee”表,那么您可以在ETL模式中创建一个相同的表“employee_stage”。
拥有本地暂存表有许多优点,例如,生产停机不会影响您的ETL系统,因为您拥有自己的“employee_stage”表,而不是引用生产的“employee”表。在生产系统中,可能存在其他操作和进程影响性能。但是,当您拥有副本暂存表时,只有ETL进程会访问它。这提供了性能优势。
在暂存映射中,
- 源表和目标表具有相同的结构
- 目标表中的数据是源表数据的副本,或者
- 暂存(目标)表中的数据是源数据的子集。
例如,如果您的源表包含部门号为10、20、30和40的员工详细信息。暂存表可以是仅包含部门号为10和30的员工记录的表。
创建暂存表在数据仓库中的目的是通过仅获取与我们相关的数据来提高数据转换过程的效率,并最大限度地减少ETL/数据仓库对实时操作系统的依赖。
如何创建映射
在本练习中,我们将创建一个暂存映射,其中源是“emp表”,目标是“emptgt”。
命名约定 – 映射名称以‘m_’前缀开头,后跟源表和目标表名称,用下划线分隔。
例如 – 如果您正在从emp表加载emp_target表,那么映射名称可以是‘m_emp_emp_target’。
步骤 1) 启动映射设计器
- 打开Informatica Designer工具
- 单击映射设计器图标启动映射设计器
步骤 2) 在映射设计器中
- 单击映射菜单
- 选择创建选项
步骤 3) 将映射名称输入为‘m_emp_emp_target’,然后选择“确定”按钮。
映射将被创建并列在映射文件夹下。
映射至少必须有一个源和一个目标,您将向映射添加源和目标。
步骤 4) 在此步骤中,我们将:
- 在源文件夹下选择“emp”源表。
- 将“emp”表拖放到映射设计器中。
在映射设计器中,将显示导入的源表。
注意 – 当您在映射中导入任何关系型(数据库)表时,还会创建一个额外的源限定符类型的对象。此源限定符转换是必需的,并帮助Informatica Integration Service识别源数据库表及其属性。每当您导入源表时,也会创建源限定符转换。您永远不应删除映射中的源限定符对象。
步骤 5) 在此步骤中,我们将:
- 在目标文件夹下选择“emp_target”源表。
- 将“emp_target”表拖放到映射设计器中。
在映射设计器中,将导入并显示“目标表”。
为了管理视图空间,您可以将这些对象图标化到映射中。
步骤 6)在映射设计器空白工作区的任意位置右键单击,然后选择选项 – 全部图标化。
选择“全部图标化”选项后,工作区将如下所示。
步骤 7) 在Informatica中,我们以从左到右的流程进行设计。因此,源表应位于左侧,目标表应位于右侧。要排列工作区中的表,请选择“emp_target”表,然后将其拖放到emp表的右侧。
进行此重新排列后,工作区将如下所示。
注意 – 定期使用“ctrl+s”快捷键将更改保存到存储库。
步骤 8) 现在您的映射中有源表和目标表,但映射尚未完成。必须将源表和目标表链接起来才能完成映射。
链接源表和目标表
双击SQ_EMP表和EMP_TARGET表,将它们的视图从图标化更改为图形化。
步骤 9) 右键单击映射设计器工作区,然后选择“按名称自动链接”选项。
步骤 10) 链接源表和目标表
- 选择源表列。
- 将列拖放到目标表。
源表和目标表将被链接,并将出现从源表到目标表的连接箭头。
注意 – 在这里,您已将所有源列链接到相应的目标表列。这意味着,对于获取的每一条源记录,目标的所有列都将被加载。如果您想排除任何特定列不被加载,请单击该列的链接,然后按键盘上的delete键。链接将被删除,目标列将不会被加载。
步骤 11) 使用快捷键“ctrl+s”保存对映射的更改。在输出窗口中,您可以看到映射验证/解析的消息。这确认您的映射是有效的。此外,在映射文件夹树中,映射名称旁边会有一个临时的绿色勾号,表示映射已成功完成。
在映射中,可能会有这样的需求:我们需要将变量传递给映射,或者可能存在需要计算临时变量然后将其存储以供下次映射会话运行时使用的场景。为此,我们创建映射参数和变量。
映射参数和变量
与所有编程语言一样,Informatica有其定义参数和变量的方式。但与许多其他编程语言不同的是,Informatica不是一种基于代码的语言。要在Informatica中创建参数和变量,您必须遵循预定义的语法和导航。
参数和变量的区别 –
映射参数 | 映射变量 |
---|---|
映射参数是那些一旦赋值就保持不变的数据类型,整个映射运行过程中都保持不变。例如,如果您创建了一个映射参数deptno=20,那么在整个映射运行过程中,值20都将是恒定的。无论在何处引用该参数,它将在该映射运行实例中始终返回值20。对于新的映射实例,可以重新定义参数值。 | 映射变量是对象,可以在整个映射运行过程中被引用(以访问其值),并且其值可以被重新分配。例如,映射变量total_salary可以在映射中使用,并且其值可以根据薪资进行更新。 |
映射参数和变量仅特定于一个映射。它们不能在另一个映射中被引用。
如何创建映射参数
当您创建映射参数时,在映射执行期间,Integration Service会查找其指定的值。这些值可以分配给以下位置。
- 在参数文件中
- 在会话前变量赋值中
- 存储库中的初始值
- 创建变量时分配的默认值
步骤 1) 创建映射参数 – 在映射设计器中,
- 选择映射菜单
- 选择参数和变量菜单
步骤 2) 在下一个屏幕上,
- 单击添加新变量菜单
- 从下拉菜单中,选择类型为参数
- 输入参数名称 $$Deptno
- 输入初始值为 10
- 选择“确定”按钮
现在,您已经创建了一个映射参数deptno,其初始赋值为10,并且可以在映射内部引用此参数。
如何创建映射变量
步骤 1) 在映射设计器中
- 选择映射菜单
- 选择参数和变量菜单
步骤 2) 在下一个屏幕上
- 单击添加新变量菜单
- 从下拉菜单中,选择类型为变量
- 输入变量名称 $$TotalSalary
- 选择数据类型为decimal
- 输入初始值为 0
- 选择“确定”按钮
这将创建一个映射变量。
注意 – 映射参数和变量名称始终以$$开头。
摘要
映射在Informatica中很重要,用于根据项目需求匹配源数据和目标数据。我们已经讨论了暂存映射以及映射变量和参数的概念。