这篇文章是Informatica PowerCenter(以下简称PowerCenter )的操作教学,供初入行的数据开发者阅读,以简单易上手为目标。PowerCenter 是一款企业级的数据集成平台,核心功能是完成数据的抽取、转换和加载(Extract、Transform、Load,即ETL过程)。在业界特别是外企有较高知名度。
当前时代都是哪些人在用PowerCenter?答案是大型企业,在大型企业(特别是员工超5000人的组织)应用的ETL工具中,PowerCenter的依然排名第6-7位。它在金融、保险、医疗、政府等受严格监管的行业中尤其受欢迎。
Informatica它在国内拥有庞大的企业客户群,这一点也为多个市场分析报告所印证。对于早期进入中国的外企,PowerCenter很可能是其IT架构的核心组件之一。

正文
1、实例
此处我们的案例特殊。相信我们的读者中有很多都是电竞爱好者。此时,假如读者是一个星际2(SC2)老玩家,他想要统计自己在天梯某类1V1对抗中,比如TvP,面对Protoss(P)哪些流程胜率高,面对哪些流程容易输。游戏大厅里没有这类数据,而玩家自己的复盘笔记通常是对比赛过程的文字描述,缺少精确统计数据。这个时候,我们引入数据库、表以及数据处理工具(ETL workflow),对流程胜率做统计,并最终希望能实时更新这些数据帮助玩家练习。这不仅对sc2老玩家有帮助,也对学习用PowerCentre做ETL流程的自学者有意义。
2、前置知识
读者需要查阅关系型数据库、数据库管理软件Oracle、表、sql等相关知识。PowerCenter接入数据库后能实现数据的抽取和加载。这里,我们的数据库指代Oracle、Mysql、snowflake这些软件管理的数据库。而ETL的数据源和数据目的地通常是一张张存在数据库中的表。
读者还需了解星际2是一款即时战略游戏,对战中存在各种各样的策略和流程,多游戏数据的统计可以帮助玩家更快速地提高游戏水平。如果不玩这款游戏,在后续实践中将SC2替换成自己喜欢的游戏或运动即可。
3、建表
在本案例中,我们选用Oracle数据库,先创建三张目标表(Source),分别记录SC2玩家的各种信息。
Table aSC2_REPLAYS:记录SC2玩家对战录像的基础信息,比如录像名称、时长、对战模式、对战玩家ID、种族和创建时间。
Table****bSC2_REPLAY_DETAILS:主要对战录像中,对战双方在游戏的前中后期所使用的策略(流程)。这里的策略我们简单理解为单矿3兵营(前期)、单矿1兵营1机场(前期)、两矿5兵营(中期)这类战术。同一种战术不会出现多种命名,以确保后续ETL在抽取数据时不会遗漏。
Table****cSC2_PLAYER_REC_IN_LADDER_1V1:记录玩家玩天梯1V1九种对抗的场数。
下图反映了Table a、b、c的关联关系。

为了得到玩家在某种对抗(比如TVP)中,面对某种策略的胜率和失败率。需创建目标表(Target)SC2_PLAYER_STRTGS_LADDER_1V1。附带上建表语句。
sql
CREATE TABLE SC2_REPLAYS
( REPLAY_NAME VARCHAR2(50 CHAR),
DURATION NUMBER(3,1),
VERSUS_MODE CHAR(20),
BATTLE_SCENARIO VARCHAR2(100 CHAR),
WINNER VARCHAR2(20 CHAR),
WINNER_RACE CHAR(8),
LOSER VARCHAR2(20 CHAR),
LOSER_RACE CHAR (8),
CREATING_DATE TIMESTAMP,
CONSTRAINT SC2_REPLAYS_PK PRIMARY KEY (REPLAY_NAME)
)TABLESPACE XXX_DATA COMPRESS;
CREATE TABLE SC2_REPLAY_DETAILS
( REPLAY_NAME VARCHAR2(50 CHAR),
WINNER_EARLY_STAGE_STRATEGY VARCHAR2(200 CHAR),
LOSER_EARLY_STAGE_STRATEGY VARCHAR2(200 CHAR),
WINNER_MID_TERM_STRATEGY VARCHAR2(200 CHAR),
LOSER_MID_TERM_STRATEGY VARCHAR2(200 CHAR),
WINNER_LATER_STAGE_STRATEGY VARCHAR2(200 CHAR),
LOSER_LATER_STAGE_STRATEGY VARCHAR2(200 CHAR),
CONSTRAINT SC2_REPLAYS_DETAILS_PK PRIMARY KEY (REPLAY_NAME)
)TABLESPACE XXX_DATA COMPRESS;
CREATE TABLE SC2_PLAYER_REC_IN_LADDER_1V1
( PLAYER_NAME VARCHAR2(20 CHAR),
NUMBER_OF_TVP NUMBER(5),
NUMBER_OF_TVT NUMBER(5),
NUMBER_OF_TVZ NUMBER(5),
NUMBER_OF_PVP NUMBER(5),
NUMBER_OF_PVT NUMBER(5),
NUMBER_OF_PVZ NUMBER(5),
NUMBER_OF_ZVP NUMBER(5),
NUMBER_OF_ZVT NUMBER(5),
NUMBER_OF_ZVZ NUMBER(5),
UPDATING_DATE TIMESTAMP,
CONSTRAINT REC_IN_LADDER_1V1_PK PRIMARY KEY (PLAYER_NAME)
)TABLESPACE XXX_DATA COMPRESS;
CREATE TABLE SC2_PLAYER_STRTGS_LADDER_1V1
( MATCH_NAME VARCHAR2(50 CHAR),
PLAYER_NAME VARCHAR2(20 CHAR),
PLAYER_WINNING_FLAG CHAR(1),
PLAYER_EARLY_STAGE_STRATEGY VARCHAR2(200 CHAR),
OPPONENT_EARLY_STAGE_STRATEGY VARCHAR2(200 CHAR),
PLAYER_MID_TERM_STRATEGY VARCHAR2(200 CHAR),
OPPONENT_MID_TERM_STRATEGY VARCHAR2(200 CHAR),
PLAYER_LATER_STAGE_STRATEGY VARCHAR2(200 CHAR),
OPPONENT_LATER_STAGE_STRATEGY VARCHAR2(200 CHAR),
PLAYER_NUMBER_OF_TVP NUMBER(5),
PLAYER_NUMBER_OF_TVT NUMBER(5),
PLAYER_NUMBER_OF_TVZ NUMBER(5),
PLAYER_NUMBER_OF_PVP NUMBER(5),
PLAYER_NUMBER_OF_PVT NUMBER(5),
PLAYER_NUMBER_OF_PVZ NUMBER(5),
PLAYER_NUMBER_OF_ZVP NUMBER(5),
PLAYER_NUMBER_OF_ZVT NUMBER(5),
PLAYER_NUMBER_OF_ZVZ NUMBER(5),
MATCH_CREATING_DATE TIMESTAMP,
CONSTRAINT PLAYER_STRTGS_LADDER_1V1_PK PRIMARY KEY (MATCH_NAME)
)TABLESPACE XXX_DATA COMPRESS;
这里略过数据库的创建过程。并假设读者已经可以用Toad,PL/sql等在数据库中执行create_sc2_tables里的四个建表语句,从而创建表(比如下图)。

4、构建映射(mapping)和会话(session)
PowerCenter安装后,打开用于Mapping构建的PowerCenter Designer。

点击PowerCenter Desinger上方菜单栏的Repository-->Configure Domain。

在弹出的窗口中,点击图中Add a new domain按钮,输入读者或管理员配置的Domain Name,Gateway Host,Gateway Port。不要忘记在窗口右侧Repositories里打勾,这设置了哪个Repository中可以看到该Domain。

双击新添加的Domain,输入用户名密码。在连接无误时,Domain下方会弹出文件夹列表。进入读者或管理员为这次项目而创建的文件夹。


4.1 导入Source和Target
点击右侧窗口上方的Source Analyzer按钮,接着点击Sources、Import from Database。


随即跳出Import tables 界面,读者可以直接选择已配好的数据源(1)或者先配置数据源(2)再尝试连接。

如果点击按钮2,再下一个界面点Add。选择对应的源数据库类型,这里我们的源库是Oracle


为你的Data Source命名(PowerCenter中的名字),填写该数据源的tns路径和源库的Server Name。这里对Oracle tns不再赘述,读者可自行查阅有关知识。点击OK。

之后回到Import tables界面,填写数据库User Name, Owner Name和Password,点击Connect。

弹出TABLES列表后,选择想要导入的表,点击OK。

导入成功后,可以看到下面的画面,检查表结构,无误后点Crtl+S保存。右键其中一个Table,鼠标指向Versioning-->点击Check in,填写Comment(必须填)后点OK(Check in一张表)或Apply to all(Check in受更改的所有表)。


在导入完Source表后,按同样方法导入Target表,只需先点击右侧窗口上方的Target Desinger,之后点最上方菜单栏的Targets。剩下步骤参考Source表的步骤。

4.2 创建Mapping
点击右侧窗口Mapping Desginer图标。

点击上方菜单的Mapping会弹出下拉列表,点击Create。

在Mapping Name窗口中输入读者需要的映射名称。基于上面的星际2项目(小节3),我们需要将数据从3张源表加载进目标表SC2_PLAYER_STRTGS_LADDER_1V1,我们将Mapping Name写为m_FULL_LOAD_SC2_STRTGS_LADDER_1V1,这里FULL_LOAD的意思是一次性全量加载所有数据,而不是对数据做批量或实时更新(后面会有另一张Mapping承担此任务)。
