一步步上手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、前置知识

读者需要查阅关系型数据库、数据库管理软件Oraclesql等相关知识。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 导入SourceTarget

点击右侧窗口上方的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承担此任务)。


未完待续。

相关推荐
Direction_Wind1 天前
如何从零设计一套数据仓库
数据仓库
李昊哲小课1 天前
Ubuntu26.04-Hadoop3.5.0搭建hive4.2.0
数据仓库·hive·数仓
nothing&nowhere2 天前
用 Python 做问卷数据清洗:无效样本检测与处理实战
开发语言·python·数据清洗·数据处理·问卷星·问卷星脚本·刷问卷
泰克教育官方账号2 天前
泰涨知识 | Hive集群环境部署
数据仓库·hive·hadoop
数据库小学妹3 天前
数据库架构入门到进阶:单机、主从、分库分表到分布式的选型实战
数据仓库·分布式数据库·数据治理·数据库架构·架构设计·数据分层
AllData公司负责人4 天前
AIIData数据中台集成OpenMetadata开源项目,成功运行Hive数据血缘拾取任务,支持库级别+表级别+字段级血缘!
大数据·数据库·数据仓库·人工智能·hive·hadoop·开源
xuruilll6 天前
数据中台开发 - (一)概述
大数据·数据库·数据仓库·flink
深蓝电商API6 天前
模拟器批量操控:雷电/夜神 + ADB集群方案
数据仓库·爬虫·adb
NG4776 天前
【ETL零代码实战】基于Uniplore助睿数智的自媒体运营可视化分析
大数据·数据分析·etl·助睿数智·bi仪表盘