一步步上手ETL工具之------Informatica PowerCenter

这篇文章是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承担此任务)。


未完待续。

相关推荐
geovindu21 小时前
SQL Data Sampling and Approximation Techniques using postgreSQL 18
大数据·数据库·数据仓库·sql·postgresql·数据库开发·数据库架构
chaser&upper21 小时前
从 xParse 看企业 AI:业务知识如何进入工作流
人工智能·agent·数据处理·合合信息·textin xparse
程序员梅雨2 天前
【从零开始学习数据仓库 | 第一篇】:维度建模理论
大数据·数据仓库·学习·阿里云·数据分析
棣廷2 天前
初识数据仓库——数仓分层到DataX数据采集
数据仓库
棣廷2 天前
初识Hive(2)
数据仓库·hive·hadoop
geovindu3 天前
Pivoting and Unpivoting Data in SQL using postgreSQL 18
大数据·数据库·数据仓库·sql·postgresql·数据库开发·数据库架构
数据库小学妹3 天前
OLAP数据库怎么选?看清OLTP、数仓、湖仓边界
数据仓库·mpp·列式存储·联机分析处理·数据库选型·olap数据库
程序 代码狂人3 天前
切片表与分区表的区别(数据开发面试版)
java·大数据·开发语言·数据仓库·算法
天河归来3 天前
从原始消息到业务数据:三层数据架构的设计与实践
数据库·数据仓库·架构