Informatica 中的 Union 转换

Informatica 中的 Union 转换可将来自多个源(Excel 文件、平面文件等)或多个 SQL 表的数据合并,并生成一个输出以存储在目标表中。它是一种活动转换,与 SQL Union All 类似。

Informatica 中的 Union 转换在实时场景中非常有用。例如,如果一个公司有 100 家门店,每家门店都维护自己的销售数据。一天结束时,它们都属于同一家公司,而您的工作是找出任何单一产品的月度或年度销售额。拜访 100 家门店,核对 100 个 Excel 或平面文件,并计算销售额是不切实际的。

在这种情况下,您必须使用 Informatica 中的 Union 转换来合并来自 100 家门店的所有 100 个 Excel 文件,将它们存储在数据仓库中,然后从数据库计算产品销售额。

Informatica Union 转换指南

在使用 Informatica Union 转换时,请记住以下指南

  • Union 转换允许多个输入组,但只产生一个输出。
  • 它不会删除输入源中的重复记录。
  • 它不会生成事务。
  • 您不能使用 Sequence Generator Transformation 来生成序列

对于此 Informatica Union 转换示例,我们将使用通过 Router Transformation 创建的 SQL 表。下面的屏幕截图将向您展示 [Router 1] 表中的数据。

[Router 2] 表中的数据。

[Router 3] 表中的数据。

在这里,我们的任务是使用 Union 转换合并这三个表,并将其保存在目标表中。

配置 Informatica 中的 Union 转换

在开始配置 Informatica 中的 union 转换之前,请先连接到 Informatica 存储库服务。为了连接到存储库服务,我们必须提供 Admin Console 凭据。因此,请输入正确的用户名和密码,然后单击“连接”按钮,如下图所示。

提示:这里,您必须提供在安装服务器时指定的管理员用户名和密码。

创建 Union 转换源定义

成功连接后,请导航到 Source Analyzer 并定义您的源。在此 Informatica union 转换示例中,我们将使用 SQL Server 数据库中的 [Router 1]、[Router 2] 和 [Router 3] 表作为我们的源定义。请参考 Database Source 以了解创建源定义涉及的步骤。

Union Transformation in Informatica 1

创建 Union 转换目标定义

请导航到 Target Designer 并定义目标。在此示例中,我们使用已创建的 SQL 表(Union Transformation)作为我们的目标定义。请参考 Create Target table using Source Definition 以了解使用源定义创建目标定义涉及的步骤。

Union Transformation in Informatica 2

在 Informatica 映射中创建 Union 转换

要创建新映射,请导航到菜单栏中的“映射”菜单,然后选择“创建...”选项。这将打开“映射名称”窗口,如下图所示。在这里,您必须为此映射(m_Union_Transformation)输入一个唯一的名称,然后单击“确定”按钮。

Union Transformation in Informatica 3

接下来,将 [Router 1]、[Router 2] 和 [Router 3] 源定义从“源”文件夹拖放到映射设计器。拖放源后,PowerCenter 设计器将自动为它们创建名为 source qualifier 的默认转换。

在 Informatica 中创建 Union 转换

要创建 Union 转换,请导航到菜单栏中的“转换”菜单,然后选择“创建...”选项,如下图所示。

单击“创建...”选项后,将打开“创建转换”窗口,如下图所示。请从下拉列表中选择 Informatica Union Transformation,为此指定一个唯一的名称(UN_Products),然后单击“创建”按钮。

Union Transformation in Informatica 5

单击“创建”按钮会将 union 转换添加到映射设计器。为了执行 union all,Union Transformation 需要一些数据,因此,请通过拖放所需字段来连接 Router 1 Source qualifier 和转换。

拖放字段后,union 转换将创建 OUTPUT Group 和 New Group。

Union Transformation in Informatica 6

为了合并一个以上的表,我们需要多个组,如 NEWGROUP。因此,双击 Informatica Union 转换以创建新组。从下面的屏幕截图中,您可以看到转换选项卡中可用的属性列表。

  • 选择转换:默认情况下,它将选择您单击的转换。
  • 重命名:此按钮将帮助您将 union 转换重命名为一个更有意义的名称。
  • 设为可重用:如果您选中此选项,则此转换将成为可重用转换。
  • 描述:请为此转换提供有效的描述。
Union Transformation 7

在“组”选项卡中,我们必须定义组名。请单击“新建组”按钮(位于关闭按钮旁边)以添加一个新组,并根据您的要求更改名称。

通过单击关闭按钮,您可以删除不需要的组。从下面的屏幕截图中,您可以看到我们创建了三个组:Least Sales、Medium Sales 和 Highest Sales。

完成组创建后,单击“确定”关闭转换窗口。

Union Transformation in Informatica 9

接下来,我们需要将 Source Qualifiers 分配给我们之前创建的新组。因此,请将 Router 2 Source qualifier 连接到 Medium Sales,将 Router 3 Source qualifier 连接到 Highest Sales。

接下来,将目标定义(Union Transformation)从“目标”文件夹拖放到映射设计器,并将转换与目标定义连接。请使用 Autolink.. 选项来连接它们。

Union Transformation in Informatica 10

在我们关闭映射之前,让我们通过转到“映射”菜单栏并选择“验证”选项来验证它。

在 Informatica 工作流中创建 Union 转换

完成 Mapping 创建后,我们需要为其创建工作流。PowerCenter Workflow Manager 提供了两种创建工作流的方法。

在此 Informatica Union Transformation 示例中,我们将手动创建工作流。要创建新工作流,请导航到“工作流”菜单并选择“创建”选项。这将打开“创建工作流”窗口。请输入唯一的名称(wf_Union_Transformation),并保留默认设置。

Union Transformation 11

创建工作流后,我们的下一步是为我们的映射创建一个会话任务。

创建 Union 转换会话

有两种类型的会话

对于此 Informatica Union Transformation 示例,我们将创建一个非可重用会话。请导航到“任务”菜单并选择“创建”选项以打开“创建任务”窗口。在这里,您必须选择“会话”作为任务类型(默认),并输入会话的唯一名称(S_Union_Transformation)。

单击“创建”按钮后,将打开一个名为 Mappings 的新窗口。在这里,您必须选择要与此会话关联的映射。例如,从下面的屏幕截图中,您可以看到我们正在选择我们之前(在步骤 3 中)创建的映射(m_Union_Transformation)。

双击会话任务进行配置。虽然我们必须配置源、目标和一些通用属性,但我们只解释其中一些属性。我们强烈建议访问 Session 文章以了解其余属性。

从下面的屏幕截图中,您可以看到我们已将 $target 变量分配给 Connection Value。我们已选中“截断目标表”选项,以从目标表中截断现有数据。

从下面的屏幕截图中,您可以看到 Informatica Union Transformation 工作流是有效的。让我们通过导航到工作流菜单并选择“启动工作流”选项来启动工作流。

Union Transformation 14

选择“启动工作流”选项后,PowerCenter Workflow monitor 将打开以监视工作流。从下面的屏幕截图中,您可以看到我们的工作流成功执行。

Union Transformation 15

让我们打开 SQL Server Management Studio,以检查我们是否成功合并了 Router 1、Router 2 和 Router 3 表中的记录。请参考 SQL Union All 文章。