PowerCenter Pro 通常指的是 Informatica PowerCenter,它是业界领先的、功能最全面的数据集成平台,本教程将结合理论、实践和最佳实践,带你一步步掌握它。

第一部分:PowerCenter 简介
1 什么是 PowerCenter?
PowerCenter 是由 Informatica 公司开发的一款企业级数据集成软件,它的核心功能是在不同的数据源(如数据库、文件、API、云服务等)之间提取、转换和加载数据,构建数据仓库、数据湖和数据集市。
2 PowerCenter 的核心组件
要学习 PowerCenter,首先要了解它的几个核心组件,它们协同工作来完成数据集成任务:
-
PowerCenter Client (客户端):这是开发者进行设计、开发和管理的工具集,通常安装在开发人员的PC上,它包含:
- Designer (设计器):核心组件,用于创建映射、映射变量、目标表定义等。
- Workflow Manager (工作流管理器):用于创建和管理工作流,即执行任务的调度和顺序。
- Workflow Monitor (工作流监视器):用于监控和查看工作流的执行状态、日志和性能指标。
- Repository Manager (仓库管理器):用于管理元数据仓库,包括用户、权限、对象等。
- Repository Service (仓库服务):一个后台服务,负责管理元数据仓库。
- Integration Service (集成服务):一个后台服务,负责执行工作流中的任务。
-
PowerCenter Server (服务器):一个独立的服务,负责执行在 Workflow Manager 中定义的工作流,它通常部署在服务器上。
(图片来源网络,侵删) -
Repository (元数据仓库):一个关系型数据库(如 Oracle, SQL Server),存储了所有 PowerCenter 对象的定义(表、字段、映射、工作流等)以及它们之间的关系,这是 PowerCenter 的“大脑”。
第二部分:环境准备与核心概念
1 环境搭建
对于初学者,最简单的方式是使用 虚拟机 安装一个包含 PowerCenter Client 和 Server 的完整环境。
- 获取软件:从 Informatica 官网或通过授权下载 PowerCenter 的安装包(
pc9.1.0版本)。 - 安装数据库:安装一个用于存放元数据仓库的数据库,如 Oracle 11g/12c 或 SQL Server。
- 安装 Repository Server:在服务器上安装并配置 Repository Server,连接到元数据仓库数据库。
- 安装 Integration Service:在同一台或另一台服务器上安装 Integration Service。
- 安装 PowerCenter Client:在开发机器上安装 PowerCenter Client。
- 配置:使用
Configuration Tool或Repository Manager来连接和配置所有服务。
提示:对于初学者,强烈建议使用现成的虚拟机镜像(如由社区或培训机构提供的),可以省去大量复杂的配置工作。
2 核心概念
在开始画图之前,必须理解以下几个核心概念:

- Source (源):数据的来源,可以是数据库表、 flat file (文本文件)、 XML 文件等。
- Target (目标):数据要加载的目的地,通常是数据仓库中的表。
- Mapping (映射):数据从源到目标转换的“蓝图”或“设计图”,它定义了数据如何流动、如何被转换。
- Transformation (转换):在映射中,用于对数据进行处理、清洗、聚合、连接等操作的逻辑单元。
- Expression:使用表达式语言 (IIF, DECODE, TO_CHAR 等) 进行计算和转换。
- Filter:根据条件过滤掉不需要的数据行。
- Aggregator:进行聚合计算 (SUM, COUNT, AVG 等)。
- Joiner:将来自不同源的数据进行连接 (类似 SQL JOIN)。
- Sorter:对数据进行排序。
- Lookup:从参考表中查询数据,类似于子查询。
- Router:根据条件将数据流分发到不同的输出组。
- Workflow (工作流):定义了任务(如执行一个映射)的执行顺序、调度和依赖关系,它是映射的“执行计划”。
- Session (会话):工作流中的一个任务,代表一次映射的执行,一个会话通常对应一个映射。
- Session and Workflow Log (日志):记录了会话和工作流执行的详细信息,包括处理的数据量、错误信息、性能指标等,是排查问题的核心依据。
第三部分:实战教程 - 从零开始创建第一个ETL流程
我们将完成一个最经典的场景:从文本文件中读取客户数据,进行简单清洗和转换,然后加载到数据库的目标表中。
准备工作
-
创建源文件:在你的电脑上创建一个名为
customers.txt的文本文件,内容如下:101,John Doe,john.d@email.com,New York 102,Jane Smith,jane.s@email.com,Los Angeles 103,Bob Johnson,bob.j@email.com,Chicago 104,,invalid.email,San Francisco 105,White Shark,white.shark@ocean,Miami这个文件有一些问题:第4行有缺失的邮箱,第5行的城市名称不规范。
-
准备目标数据库:
- 在你的目标数据库(如 Oracle, SQL Server)中创建一个目标表
DIM_CUSTOMER。 - 注意:在 PowerCenter 中,目标表的定义必须和数据库中的物理表结构完全一致。
-- Oracle/SQL Server 示例 CREATE TABLE DIM_CUSTOMER ( customer_id NUMBER(10) PRIMARY KEY, full_name VARCHAR2(100), email_address VARCHAR2(100), city VARCHAR2(50) ); - 在你的目标数据库(如 Oracle, SQL Server)中创建一个目标表
使用 Designer 设计映射
-
启动 Designer:打开 PowerCenter Client,选择
Designer。 -
连接仓库:使用
Repository Manager配置好的用户名和密码连接到元数据仓库。 -
创建文件夹:在
Navigator窗口,右键点击Repository->Create->Folder,创建一个自己的文件夹,如MyFirstProject。 -
导入源和目标定义
- 导入源:
Tools->Source Analyzer。Sources->Import->From Database。- 选择
Flat File,点击Next。 - 浏览并选择
customers.txt。 - 在
Flat File Wizard中,设置分隔符为逗号 ,勾选First row is header(如果文件有标题行)。 - 完成后,
Source Analyzer中会显示CUSTOMERS的表结构。
- 导入目标:
- 在
Source Analyzer中,右键点击DIM_CUSTOMER表(你刚刚在数据库中创建的表)。 - 选择
Export Objects->To Repository。 - 选择你的
MyFirstProject文件夹,完成导入。
- 在
- 导入源:
-
创建映射
- 关闭
Source Analyzer,回到Designer主界面。 Mappings->Create,创建一个新映射,命名为M_Customers_ETL。- 在
Mapping Designer界面,从Navigator中拖动CUSTOMERS源定义和DIM_CUSTOMER目标定义到画布上。
- 关闭
-
设计数据流和转换
-
拖入转换:从
Toolbox中拖入一个Expression转换到画布上,重命名为EXP_Clean_Data。 -
连接端口:
- 从
CUSTOMERS的CUST_ID端口拖出一条线,连接到EXP_Clean_Data的CUST_ID端口。 - 同样连接
FULL_NAME和CITY。 - 对于
EMAIL_ADDRESS,我们进行清洗,连接EMAIL_ADDRESS到EXP_Clean_Data的EMAIL_ADDRESS端口。
- 从
-
配置 Expression 转换:
- 双击
EXP_Clean_Data打开编辑器。 - 切换到
Properties标签页,输入描述,如清洗客户数据。 - 切换到
Columns标签页。 - 在
EMAIL_ADDRESS对应的Expression列中,输入表达式来处理无效数据:IFF(ISNULL(EMAIL_ADDRESS) OR EMAIL_ADDRESS = '', 'N/A', EMAIL_ADDRESS)
这个表达式表示:如果邮箱为空或空字符串,则替换为 'N/A',否则保持原值。
- 在
OUTPUT列,确保所有需要的列都勾选了O(Output)。 - 点击
OK保存。
- 双击
-
连接到目标:
- 从
EXP_Clean_Data的输出端口拖出线,连接到DIM_CUSTOMER的相应输入端口。 - 注意:目标表的列名(如
CUSTOMER_ID)和源/转换的列名(如CUST_ID)可能不同,PowerCenter 会自动进行名称匹配。
- 从
-
-
验证和保存映射
- 点击工具栏上的
Validate按钮(一个对勾图标),如果没有错误,说明你的映射设计是正确的。 - 保存映射。
- 点击工具栏上的
使用 Workflow Manager 创建和调度任务
-
启动 Workflow Manager:打开 PowerCenter Client,选择
Workflow Manager。 -
连接仓库:使用相同的用户名和密码连接。
-
创建工作流:
- 在
Navigator中,右键点击你的MyFirstProject文件夹 ->Create->Workflow。 - 命名为
WF_Load_Customers。 - 在弹出的
Edit Workflow窗口中,可以设置一些调度属性,比如每天凌晨2点运行,我们先保持默认,直接OK。
- 在
-
创建会话:
- 在
Workflow Designer界面,右键点击工作流WF_Load_Customers->Create->Session。 - 命名为
S_Customers_ETL。 - 在
Mapping选项卡中,选择你刚刚创建的M_Customers_ETL映射。 - 点击
OK。
- 在
-
配置会话属性:
- 双击
S_Customers_ETL会话,打开属性窗口。 - Mapping 标签页:确认映射正确。
- Properties 标签页:可以设置会话的超时时间、错误处理方式等。
- Sources 标签页:点击
Source File后面的Browse,选择你的customers.txt文件路径。 - Targets 标签页:确认目标表连接正确。
- 点击
OK保存。
- 双击
执行和监控
-
启动 Workflow Monitor:打开 PowerCenter Client,选择
Workflow Monitor。 -
连接仓库:连接后,你会看到所有的工作流。
-
执行工作流:
- 在
Navigator中找到WF_Load_Customers。 - 右键点击它 ->
Start Workflow。
- 在
-
监控执行:
- 工作流会出现在右侧的窗口中,状态会从
Scheduled->Running->Succeeded(或Failed)。 - 如果状态是
Succeeded,恭喜你!你的第一个ETL流程成功运行了。 - 如果是
Failed,双击工作流或会话,查看Log标签页,里面会详细记录错误原因,根据日志进行排查。
- 工作流会出现在右侧的窗口中,状态会从
-
验证结果:
- 连接到你的目标数据库,查询
DIM_CUSTOMER表。 - 你会看到数据已经被成功加载,并且第4行和第5行的数据已经按照你的
Expression规则进行了处理。
- 连接到你的目标数据库,查询
第四部分:进阶学习与最佳实践
当你掌握了基础后,可以继续学习以下高级主题:
-
变量:
- Mapping Variables (映射变量):在映射中使用的变量,其值可以在会话之间保持,可以用它来记录每次加载的最大ID,实现增量加载。
- Session Variables (会话变量):由 Integration Service 在运行时设置,可以用来获取系统信息(如会话开始时间
$$SessStartTime)。
-
高级转换:
- Stored Procedure:调用数据库中的存储过程。
- Rank:进行排名操作。
- Normalizer:处理 COBOL 类型的变长记录。
- External Procedure:调用外部程序(如 C/C++ 编写的动态链接库)进行复杂处理。
-
调度与依赖:
- 在
Workflow Manager中使用Command Task来执行操作系统命令。 - 使用
Link来定义任务之间的先后依赖关系。
- 在
-
性能调优:
- 分区:将一个会话的数据流分成多个部分,由 Integration Service 的多个进程并行处理,是提升性能最有效的方法。
- 数据缓存:合理配置
Lookup、Aggregator等转换的缓存大小。 - 优化 SQL:在
Target Load Plan中控制对目标表的加载方式(如Insert、Update、Append)。
-
错误处理与恢复:
- 配置会话的
Error Rows属性,将错误数据写入到错误表中。 - 使用
Recovery Option,可以从上一次失败的地方继续执行,而不是从头开始。
- 配置会话的
学习资源推荐
- 官方文档:Informatica 官网提供最权威、最全面的文档和手册,是学习的首选。
- 在线课程:Udemy, Coursera, LinkedIn Learning 等平台上有大量高质量的 PowerCenter 课程。
- 技术博客与社区:CSDN、博客园、Stack Overflow 等社区有大量实战经验和问题解答。
- 书籍:可以寻找一些经典的 Informatica PowerCenter 书籍作为系统学习的参考。
学习 PowerCenter 是一个理论与实践紧密结合的过程,从创建简单的映射开始,逐步接触复杂的转换和工作流调度,并不断通过查看日志来调试和优化,祝你学习顺利!
