Informatica 中的 Filter 转换

Informatica 中的 Filter 转换根据指定的表达式/条件过滤记录。Filter 条件返回布尔值 TRUE 或 FALSE,这意味着集成服务将检查每一行是否满足指定条件。如果条件为 TRUE,则 Informatica Filter 转换将通过该行。否则,它将跳过当前行并检查下一行。

Informatica 中的 Filter 转换在实际应用中非常有用。例如,如果您想加载销售额高于最低阈值的客户数据等。在本文中,我们将在两个 SQL 表上执行 Filter 转换。

对于这个 Informatica Filter 转换示例,我们使用 [Adventure Works DW 2014] 数据库中的 [Dim Products] 和 [fact Internet Sales] 表。

Informatica Filter 转换示例

在我们开始之前,请首先使用您的 管理员控制台 凭据连接到 Informatica 存储库服务。

创建 Informatica Filter 转换源定义

成功连接后,请导航到 Source Analyzer 并定义您的源。在此 Filter 转换示例中,我们将使用 SQL Server 数据库中的 [Dim Products] 和 [fact Internet Sales] 作为我们的源定义。请参考 Database Source 以了解创建源定义涉及的步骤。

为 Filter 创建目标定义

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

创建 Filter 的映射

要为 Informatica Filter 转换创建新映射,请导航到菜单栏中的“Mappings”菜单,然后选择“Create..”选项。这将打开“Mapping Name”窗口,如下所示。在这里,您必须为此映射(m_Filter_Transformation)指定一个唯一的名称,然后单击“OK”按钮。

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

接下来,将 [Dim Products] 和 [fact Internet Sales] 源定义从“Sources”文件夹拖放到映射设计器。拖动源后,PowerCenter Designer 将自动创建一个名为 source qualifier 的默认转换,如下所示。

Filter Transformation in Informatica 4

[Dim Products] 和 [fact Internet Sales] 表之间存在主键和外键关系,这一点我们都知道。因此,我们删除了一个源限定符,并将来自两个表的必需字段添加到一个源限定符中。

Filter Transformation in Informatica 5

在 Informatica 中创建 Filter 转换

要创建 Filter 转换,请导航到菜单栏中的“Transformation”菜单,然后选择“Create..”选项。

单击“Create..”选项后,将打开“Create Transformation”窗口,如下所示。请从下拉列表中选择 Informatica Filter 转换,为其指定唯一的名称(fil_SalesAmount),然后单击“Create”按钮。

Filter Transformation in Informatica 7

单击“Create”按钮后,filter 转换将添加到映射设计器。为了通过表达式过滤记录,filter 转换需要一些数据。因此,我们必须使用 Autolink.. 选项将源定义连接到转换(或选择并拖动所需的字段)。

Filter Transformation 8

双击 Informatica Filter 转换以提供过滤条件。从下面的屏幕截图中,您可以看到“Transformation”选项卡中可用的属性列表。

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

以下屏幕截图将显示 Informatica Filter 转换“Ports”选项卡中可用的选项列表。

  • Port Name:可用列名的列表。您可以单击“New Column”按钮添加新列,并通过单击剪刀按钮删除不需要的列。
  • I:在此部分下被勾选的列是 filter 转换的输入列。
  • O:在此部分下被勾选的列是 filter 转换的输出列。如果您取消勾选任何列,则该列将无法加载到目标表中。
Filter Transformation in Informatica 10

以下屏幕截图将显示“Properties”选项卡中可用的选项列表。默认情况下,“Filter Condition”设置为 TRUE,我们必须在此处提供条件。为了指定条件,请单击下面的箭头按钮。

提示:如果您将 Filter Condition 指定为 FALSE,则 filter 条件将不允许任何记录。

Filter Transformation 11

单击箭头按钮后,将打开“Expression Editor”窗口,如下所示。在这里,您可以使用可用的函数、端口(列名)和变量编写自定义表达式。

在此示例中,我们使用简单的表达式,即 SalesAmount > 2000,如下所示。这意味着 Informatica Filter 转换将返回销售额大于 2000 的记录。

Filter Transformation in Informatica 13

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

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

Filter Transformation in Informatica 14

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

创建 Informatica Filter 转换工作流

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

在此 Informatica Filter 转换示例中,我们将手动创建工作流。要创建新工作流,请导航到“Workflows”菜单并选择“Create”选项。这将打开“Create Workflow”窗口,如下所示。

请提供唯一的名称(wf_Filter_Transformation)并保留默认设置。创建工作流后,下一步是为我们的映射创建会话任务。

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

创建会话

有两种类型的会话

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

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

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

从下面的屏幕截图中,您可以观察到我们将 $target 变量分配给 Connection Value,将 Target Load Type 选项从 Bulk 更改为 Normal 模式,并勾选了 Truncate target table 选项以从目标表中截断现有数据。

从下面的屏幕截图中,您可以观察到 Informatica 工作流中的 Filter 转换是有效的。现在,让我们通过导航到工作流菜单并选择“Start Workflow”选项来启动工作流。

Filter Transformation in Informatica 18

选择“Start Workflow”选项后,将打开 PowerCenter Workflow Monitor 来监视工作流。从下面的屏幕截图中,您可以观察到我们的工作流已成功执行。

Filter Transformation Workflow 19

让我们打开 SQL Server Management Studio,检查我们是否成功使用 Filter 转换限制了 Sales Amounts 小于 2000 的记录。