kettle工具使用——测试基本面

金融数据的来源:万得资讯、财汇、聚源,利用kettle工具和kettle脚本,将有用的数据传输到我们自己使用的数据库中。

如何测试kettle脚本。

一、背景业务知识

1、证券交易信息:投资者买卖证券的申报记录进入证券交易系统后汇总,并按照一定规则进行排序,形成申报数据库。投资者申报的内容经证券交易所系统自动撮合后形成交易记录,汇集成成交数据库。与此同时,证券交易所的行情系统生成软件在申报数据和成交数据库中进行指定指标抽取,结合部分指标的统计计算,形成固定数据格式的行情数据库。

2、万德的数据来源:上海证券交易所、深圳证券交易所授权的证券信息经营机构和专业资讯数据提供商如恒生指数、财华社等获取,从其他第三方数据收集机构购买。购买专业媒体和研究机构的报告。万得资讯将数据采集、录入和分析,会按照数据源的不同(如海外市场、香港等)而分成几个大组处理各种信息。

3、金融机构购买万德整理的数据,就是我们所说的wind数据库里的信息。将这些信息利用kettle工具和kettle脚本将Wind数据库的数据拆分、提取分类插入或更新到我们自己的sirm系统的数据库中。

二、明确测试要求

1、验证脚本是否能正确的通过kettle工具从Wind数据库中提取出我们所需要的数据,并正确实时的插入到sirm系统中。

a、我们所需要的基本面数据根据项目需求,sirm有一套基本面数据库字典,根据需要的数据确定我们sirm数据库需要哪些表以及表里的数据。举例:比如仅仅只需要A股数据和申万行业体系的数据;首先需要确定需要哪些表,然后确定数据。其他具体见附件一。

b、根据数据字典以及关系表确认数据来源。静态验证脚本,可以自己编辑sql脚本,对比kettle脚本。具体查看kettle脚本,见附件二。

c、kettle的实时调用有两种:1、kettle工具自动定时调用kettle脚本进行数据提取插入;2、一般项目会有固定的代码定时任务调用kettle脚本,因此需要测试sirm系统定时任务能否能否正确的调用kettle工具来执行kettle脚本。根据具体情况

三、kettle概念:Kettle是一款国外开源的ETL工具(即数据库提取插入工具),纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换即ktr文件(可看到数据库表的每一个字段的数据来自数据源的哪个表哪个字段),job则完成整个工作流的控制(控制数据源是哪个,在哪儿查询,在哪儿插入,先查询什么,后干什么)。通俗来讲,一个复杂的数据过滤插入脚本基本上是由kjb文件调用Ktr文件来共同实现整个数据的提取的。

四、操作:如何导入kettle脚本,执行脚本,进行数据提取

4.1、前期准备工作:启动kettle,连接数据库,导入kettle脚本,更改数据库连接

1、解压kettle安装包:pdi-ce-4.1.0-stable,点击pdi-ce-4.1.0-stable\data-integration中的spoon.bat文件打开spoon

2、创建资源库

第一步:新建资源库,点击“Tools-资源库-连接资源库”弹出如下窗口

第二步:建立数据库连接

第三步:点击Test测试数据库连接是否正确

第四步:创建资源库表结构

点击执行后,再点击确定按钮,最后关闭窗口。创建完毕后,默认密码为admin

3. 导入资源数据

第一步:如下图: 点击Tools-资源库- Import Repository(必须在登录状态,没登录的话先点击Tools-资源库-连接资源库)

第二步:1.找到数据资源文件;2.选择script文件夹内的所有脚本后 按 打开  。

注意:文件路径不可含有中文,否则导入失败!

第三步:选择你要放的资源库的文件夹,放在根目录。

第四步:点击,可以看到导入的脚本

4. 修改连接

修改连接,关闭所有转换,点击

Sirm是sirm系统的数据库连接(即接收端数据库)

Sourcedb是数据源的数据库连接

点击修改以上两个连接,之后断开资源库

注意:退出kettle前 最好先断开资源库,然后再关闭,否则有些操作会无效,比如删除脚本会删不掉、修改连接会无效等。

 

 五、查看脚本,理解脚本,根据脚本,自动拉取,编辑正确的查询的sql。

1、如下是kettle脚本文件。一般一个kjb文件会调用多个ktr文件。

2、连接数据库,点击,可以查看到脚本文件。

3、点击job下的文件,查看表的控制工作流。

4、根据kjb转换文件查询对应的ktr脚本,例如上图在sdc_aipo.kjb文件中,调用了三个sdc_aipo、sdc_aipo_cx、sdc_aipo(update) ktr文件,查看每个ktr的具体操作。

5、查看ktr中每个节点的具体操作,点击上图中铅笔图标进行编辑,可查看到脚本具体内容如下,连接的是sirm数据库,查询xxx表中kettle更新的时间。

6、根据每个节点操作的sql,根据数据字典和表字段对应关系查看这些脚本是否编写正确,确认脚本正确后,执行kjb文件,开始导入数据;

六、如何进行测试:从拿到需求到测试完成的一个过程。

手把手教学,一开始领导让我从拿到需求到测试完成都写下来,我还是有点拒绝的,因为做测试这个工作,每个人的能力,深度广度不一样,思考和入手的方向就不一样,做测试是需要思考的,我不想让自己的思维限制了大家的,也希望 大家多加思考,测试并不是一个培训或者手把手教学,你就能按部就班的。

6.1了解开发是如何将这个功能开发出来的,最好自己也编写一个相关的脚本,了解相关业务及工具,更加全面的进行测试。

我发现这篇文章写的很好,介绍keettle的组件和使用,步骤清晰,大家可以直接点进查看:https://www.cnblogs.com/zhangchenliang/p/4179775.html

下面是我编写的一个简单的脚本,模拟将wind数据库的某个表的某个字段导入到另外一个数据库的某个表的某个字段中,复杂的需要各位深入学习,在后面的测试示例中我会简单做脚本介绍。

6.1.1、将wind中的 compintroduction(公司简介)根据sirm基本面数据字典要求导入到sdc_companytest表中(为简单,sdc_companytest只需要:id、公司代码、公司简称、是否上市)。

已存在的条件:wind数据源数据库(192.168.x.xxx/1521:orcl:wind);测试sirm数据库(172.16.x.xxx/1521:sirmbroker5)

6.1.2、 准备的sirm数据库,进行清库,清表,重新创建干净的需要字段的sdc_company表。所以一般开发脚本的部署包需要以下三个sql脚本。

在我们的案例中,有sdc_company表的先要清表,然后再创建新的sdc_company保证有我们所需要的字段,此表不需要初始化数据因此不需要初始化sql脚本。

1)清表数据结构及主外键:sdc_companytest没有外键,无需删除外键

直接:drop table sdc_companytest

2)创建表及结构:

3) create table SDC_COMPANYtest  --公司表

(  GUID             VARCHAR2(40) default Sys_guid() not null,

COMPANYCODE      VARCHAR2(50),-----------公司代码

NAME             VARCHAR2(200),-----公司简称

IS_LISTED NUMBER(1),----是否上市

CREATETIME       DATE default sysdate,

UPDATETIME       DATE default sysdate);

---为字段添加注释

comment on column SDC_COMPANYtest.COMPANYCODE

is ‘公司代码‘;

comment on column SDC_COMPANYtest.NAME

is ‘公司简称‘;

comment on column SDC_COMPANYtest.IS_LISTED

is ‘是否上市‘;

4)Kettle创建脚本

步骤1:创建一个kjb转换和一个ktr作业。

步骤2:在ktr转换上创建两个DB链接,一个wind数据源,一个sirm数据库。

步骤3:创建步骤与步骤之间的关系。

1:在核心对象中添加表输入,查询出所需要数据源导出的表数据

2:创建另外一个步骤【插入/ 更新】,然后在【表输入】上同时按住shift键和鼠标左键滑向【插入/ 更新】,这样建立两个步骤之间的连接,【插入/ 更新】执行的逻辑是如果wind表中的记录在sirm中不存在那么就插入,如果存在就更新,如下图,在插入更新中我们可以做一些关键条件和字段映射,这里我们是最简单的!点击保存,把我们建立的转换保存一下。建立好转换之后,我们可以直接运行这个转换,检查一下是否有错,如图,有错误都会在下面的控制台上输出。

步骤4:转换定时执行,建立作业。在通用中建立一个start,然后添加一个转换,配置上我们前面创建的转换的ktr文件。

步骤5:双击start,配置相应的定时执行,这样这个作业就制定好了,点击保存之后,我们就可以在图形化界面上点击开始执行了。在我们的项目中,是通过项目的kettle定时任务来执行kettle脚本的,因此不需要进行这个步骤五进行定时。此时点击绿色三角形就可以执行了。

步骤6:查询sirm系统的sdc_companytest就可以看到导入的数据,如图,数据导入成功。

6.2 、理解需求。

拿到的需求如下,需求写的不好,需求背景、需求目标、业务逻辑、功能特性、数据上报都没写。不想继续吐槽,大家将就一下吧(题外话:在实际的工作中,中小型企业大多追求的是利益最大化,效率最高效,反而一些前期细节注重的不好,导致后期延期工作进展不顺利、得不偿失。)

需求提供个人长期业务接触得出以下几点详细需求拆分:

1、项目需要一个oracle11g的数据库。

2、项目需要基本面数据,数据来源于新wind数据源。

3、项目所需数据:需要所有的必须的基本面表、基本面数据(只需要A股、申万行业体系数据)、其他必须初始化数据

4、数据来源范围:1)新wind数据库中wind用户下的表的数据。

2)表中A股的数据和申万行业体系数据

5、基本面数据,利用脚本通过工具导入,我们公司使用的是kettle工具脚本导入。

6、数据导入:1)首次全量导入;2)数据动态增量导入。

7、数据导入成功后在项目系统中的配置和展示。

以上通俗来将就是:1、数据表是哪些;2、数据来源是哪些;3、数据如何导入;4、数据静态、动态导入场景;5、数据导入后的使用。

6.3、根据需求和实际项目业务编写相关测试点。

根据测试点以及表的要求,对表进行表名、字段长度、类型、注解、导入数据数量、数据正确性进行详细核对。

结束!

原文地址:https://www.cnblogs.com/ljlishome/p/10512371.html

时间: 2024-11-13 06:56:53

kettle工具使用——测试基本面的相关文章

nginx统计模块安装及用ab工具压力测试nginx

1.装了httpd之后在bin目录会有ab的执行程序 2./Data/apps/httpd/bin/ab -n 5000 -c 1000 http://127.0.0.1/index.html -n 选项表示总请求书  -c 表示并发数 3.安装nginx统计模块 a.停掉nginx b./Data/apps/nginx/sbin/nginx -V查看原来的编译选项(如果没装nginx就不用这一步了,直接安装) c.编译选项加上--with-http_stub_status_module   m

kettle工具实现报表导出的初步搭建

1.下载kettle 国外网站:http://kettle.pentaho.org/需要FQ,下载慢 2.下载完成启动(windows)-->spoon.bat 3.进入界面,两个主要的tab页 4.第二个tab页里用到的 5. 第一步设定REST接口需要的参数(比如URL) 第二步调用REST接口 第三步使用JSON控件接收REST返回数据 第四步将返回数据输出到Excel中 6.url返回的json数据 7.运行结果: 8.如果自己链接数据库的话,会缺少数据库驱动,需要在lib包下面加上,如

Android高手速成--第四部分 开发工具及测试工具

第四部分 开发工具及测试工具 主要介绍和Android开发工具和测试工具相关的开源项目. 一.开发效率工具 Json2Java根据JSon数据自动生成对应的Java实体类,还支持Parcel.Gson Annotations对应代码自动生成.期待后续的提取父类以及多url构建整个工程的功能项目地址:https://github.com/jonfhancock/JsonToJava在线演示:http://jsontojava.appspot.com/ IntelliJ Plugin for And

火狐上的一个post提交工具(主要用于测试接口时候)

添加的过程 安装完后,就可以在下图上,看到一个poster 点击poster就可以看到下图 图中红线圈好的,是必须要填写的 Url是访问路径 Name是参数名称 Value是参数值 需要注意一点的是:如图 切换上面的Tab控件需要点击图中红线圈住的部分,这样才能使的参数添加到url后面传参,丢掉这一部分的话,参数是没有办法传过去的! 火狐上的一个post提交工具(主要用于测试接口时候),布布扣,bubuko.com

【转】不懂得使用工具的测试不是好测试

测试工具大全,这里应该有你想要的. 压力测试工具集 工具相关网址 LoadRunner http://www.mercuryinteractive.com/products/loadrunner/ SilkPerformer http://www.segue.com/products/load-stress-performance-testing/index.asp QALoad http://www.compuware.com/products/qacenter/qaload.htm WebL

apache ab工具压力测试

apache本身自带了一个测试工具ab,在apache的安装目录bin目录下 ab的使用方法: Usage: ab [options] [http[s]://]hostname[:port]/path -n 测试会话中所执行的请求个数,默认时,仅执行一个请求-c 一次产生的请求个数.默认是一次一个-t 测试所进行的最大秒数-v 设置显示信息的详细程度 - 4或更大值会显示头信息, 3或更大值可以显示响应代码(404, 200等), 2或更大值可以显示警告和其他信息. -V 显示版本号zui 最常

Android 开发工具及测试工具 汇总

注明:  转自 外部网站 http://www.tuicool.com/articles/EFBjequ 主要介绍和Android开发工具和测试工具相关的开源项目.  Json2Java 根据JSon数据自动生成对应的Java实体类,还支持Parcel.Gson Annotations对应代码自动生成.期待后续的提取父类以及多url构建整个工程的功能 项目地址: https://github.com/jonfhancock/JsonToJava 在线演示: http://jsontojava.a

Android 开源项目android-open-project开发工具及测试工具解析 开发效率工具,开发自测相关,测试工具,开发及编译环境,其他

主要介绍和Android开发工具和测试工具相关的开源项目. 一.开发效率工具 Parceler 通过注解及工具类自动完成实体类 Parcelable及值传递 项目地址:https://github.com/johncarl81/parceler Json2Java 根据JSon数据自动生成对应的Java实体类,还支持Parcel.Gson Annotations对应代码自动生成.期待后续的提取父类以及多url构建整个工程的功能 项目地址:https://github.com/jonfhancoc

ab工具使用(测试平台的并发性能)简单介绍一下

Apache -- ab工具主要测试网站的(并发性能) 这个工具非常的强大. 基本语法 :   cmd>ab.exe –n 请求总次数  -c 并发数 请求页面的url    进入到ab.exe目录 举例:  cmd>ab.exe –n 10000 –c 100 http://localhost/test.php 简单test结果简单介绍一下: ab工具使用(测试平台的并发性能)简单介绍一下