Informatica 排名转换(带分组)

Informatica 排名转换类似于 SQL 的 RANK 函数,用于选择数据的顶部或底部排名。在本文中,我们将结合一个示例,解释配置带分组的 Informatica 排名转换所涉及的步骤。

在本例中,我们将使用下方显示的数据。

Source Table 5

配置 Informatica 排名转换(带分组)

在开始配置排名转换之前,首先连接到 Informatica 存储库服务。为了连接到存储库服务,我们需要提供 管理员控制台 凭据。因此,请提供在 安装 服务器时指定的适当用户名和密码,然后单击连接按钮,如下图所示。

Connect to Repository admin console

提示:请参阅 Informatica 中的排名转换 文章,了解不带分组的转换。

步骤 1:创建源定义

成功连接后,请导航到 源分析器 并定义您的源。在此示例中,我们将使用 SQL Server 数据库中的 [Employ] 表作为源定义。请参阅 数据库源 以了解创建源定义所涉及的步骤。

Informatica Rank Transformation 6

步骤 2:创建目标定义

请导航到 目标设计器 并定义目标。在此示例中,我们将使用已创建的 SQL 表作为目标定义。请参阅 使用源定义创建 Informatica 目标表 以了解创建目标定义所涉及的步骤。

步骤 3:创建映射

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

提示:请参阅 Mapping 文章以了解创建 Mapping 所涉及的步骤。

接下来,将 [Employ] 源定义从“源”文件夹拖放到映射设计器。拖动源后,PowerCenter 设计器将自动创建一个名为源限定符的默认转换。

步骤 3(a):在 Informatica 中创建排名转换

要使用分组在 Informatica 中创建排名转换,请导航到菜单栏中的“转换”菜单,然后选择“创建.”选项,如下图所示。

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

Rank Transformation in informatica 6

单击“创建”按钮后,排名转换将添加到映射设计器。为了对数据进行排名,排名转换需要一些数据。因此,我们必须通过拖动所需的字段来连接源定义与转换。

Informatica Rank Transformation 10

从上图您可以观察到名为 RANKINDEX 的新项,这是 排名转换 创建的默认端口。此输出端口将保存排名编号,因此我们需要将此输出端口分配给目标表的排名列。

双击排名转换以提供排名因子(您想根据哪个列进行排名)。下图将显示端口选项卡中可用的选项列表。

  • R:请勾选您想用作排名因子的列(您想根据哪一列进行排名)。例如,如果您想按年收入对数据进行排名,那么您必须像我们下面所示的那样勾选它。
  • 分组依据:请勾选您想用于分组的列。在此示例中,我们想使用职业对 Employ 表进行分组,然后我们想对各个组内的员工进行排名。
Informatica Rank Transformation 1

下图将显示属性选项卡中可用的选项列表。

  • 顶部/底部:这将为用户提供两个选项,即顶部和底部。如果您想从上到下(Z 到 A)对数据进行排名,请使用顶部选项;如果您想从下到上(A 到 Z)对数据进行排名,请使用底部选项。
  • 排名数量:请输入您要排名的行数。默认情况下,该值为 1,表示排名转换只选择 1 条记录。

在此示例中,我们想根据每条 Employ 表记录的年收入(降序)进行排名。因此,我们将“顶部/底部”属性值选为“顶部”,将“排名数量”属性值选为 20(我们的最大记录数为 14)。

Informatica Rank Transformation 10

完成属性配置后,单击 OK 关闭转换窗口。

接下来,将目标定义(排名转换)从“目标”文件夹拖放到映射设计器,并将转换与目标定义连接。请使用“自动链接.”选项进行连接。

Informatica Rank Transformation 11

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

步骤 4:创建工作流

完成映射创建后,我们必须为其创建工作流。PowerCenter 工作流管理器提供了两种创建工作流的方法。

在此示例中,我们将手动创建工作流。要创建新工作流,请导航到“工作流”菜单并选择“创建”选项。这将打开“创建工作流”窗口,如下图所示。请提供一个唯一的名称(wf_Rank_Transformation),并保留默认设置。

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

注意:我们强烈建议参考 工作流 文章以了解手动创建工作流所涉及的步骤。

步骤 4(a):创建会话

有两种类型的会话

  • 不可重用会话任务:请参阅 会话 文章以了解其中涉及的步骤。
  • 可重用会话任务:请参阅 可重用会话 文章以了解其中涉及的步骤。

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

单击“创建”按钮后,将打开一个名为“映射”的新窗口。在此,您必须选择要与此会话关联的映射。从下图可以看出,我们选择了之前(在步骤 3 中)创建的映射(m_Rank_Transformation)。

Informatica Rank Transformation 13

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

从下图可以看出,我们将 $target 变量分配给了连接值,将目标加载类型选项从批量更改为正常模式,并勾选了“截断目标表”选项,以从目标表中截断现有数据。

Informatica Rank Transformation 14

从下图可以看出,带分组的 Informatica 排名转换工作流是有效的。现在,让我们通过导航到“工作流”菜单并选择“启动工作流”选项来启动工作流。

Informatica Rank Transformation 2

选择“启动工作流”选项后,将打开 PowerCenter 工作流监视器以监视工作流。从下图可以看出,我们的工作流已成功执行,没有任何错误。

Informatica Rank Transformation 3

让我们打开 SQL Server Management Studio,检查我们是否使用 Informatica 排名转换(带分组)成功地根据年收入对记录进行了排名。

Group By 4

我们可以使用以下 SQL RANK 函数 查询来实现上述输出。

SELECT [FirstName]
      ,[LastName]
      ,[Education]
      ,[Occupation]
      ,[YearlyIncome]
      ,[Sales]
      ,RANK() OVER (
                     PARTITION BY Occupation 
                     ORDER BY [YearlyIncome] DESC
          	   ) AS RANK
  FROM [Customers]