ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

简单使用kettle转换经销商信息表

2021-08-26 08:31:46  阅读:242  来源: 互联网

标签:经销商 转换 dealers bb DECIMAL kettle 550 DMS 内存


使用kettle把DMS数据库转换到本地(公司服务器)数据库,帆软报表对数据源的需求从DMS数据库改成这个本地数据库。

据说用帆软直接访问DMS数据库,对DMS可能会造成性能上的影响;就我目前所知,没有这种影响,kettle也是大量select DMS的数据。但是ETL成一个恰当的数据源(中间层),非常有价值。

这是第一次用kettle,所以仅以简单的转换为主,达成能够支持帆软报表的目标即可。更加完善的数仓设计不在本次考虑(维表事实表元数据等)。

 

1、经销商信息,目标字段:

  • 其中授权商圈、营业状态、省、市、县、大区、区域 源于他表,但转换时不做联接处理(不增加耦合);
  • 该表还有一些冗余字段,比如大区名称,DMS自身的处理没有级联更新而出现脏数据,所以转换时剔除这些字段。
  • 业务日期将转换为Date类型('YYYY-MM-DD'格式);以经销商名称为参照,取最后一条记录(多次入网的仅取最后一次,因为多次入网基本上意味着之前的入网是错误创建;DMS没有删除功能或标识,只有退网再入)。——注意这些都不做转换。
  • 但是将范围定在COMAPANY_ID=1001(从总公司的角度),这样会减少一半记录。

所以,这是一次 Data migration ,迁移一些列和一些行。

考虑仅仅是为了FineReports,又减少了一些字段,定为:

  我准备用UPDATED_TIME作为更新的标准,但是有不确定项:DMS自身是否真正在维护这个字段?目前看来比较像。

 

2、源表名称是dt_bb_dealers,目标表是dms_bb_dealers,字段名称不变。

CREATE TABLE IF NOT EXISTS finedb.dms_bb_dealers LIKE another_db.dt_bb_dealers; -- 复制表结构和索引

CREATE TABLE finedb.dms_bb_dealers As SELECT * FROM another_db.dt_bb_dealers LIMIT 0;  -- 只复制表结构

以上是同一服务器复制表结构的语句(未测试),但不同服务器的呢?尝试导出表结构:

  因导出工具版本5.6低于数据库版本5.7,无法导出。直接创建:

CREATE TABLE IF NOT EXISTS dms_bb_dealers (
  DEALER_ID DECIMAL(8,0) NOT NULL,
  DEALER_CODE VARCHAR(16), DEALER_NAME VARCHAR(128),
  DEALER_SHORT_NAME VARCHAR(128), DEALER_LEVEL DECIMAL(8,0),
  AUTHORIZED_BCD DECIMAL(8,0),
  JOIN_TIME TIMESTAMP,
  BIZ_STATUS DECIMAL(8,0),
  PROVINCE DECIMAL(8,0),
  CITY DECIMAL(8,0),
  COUNTY DECIMAL(8,0),
  REGISTERED_CAPITAL DECIMAL(12,2),
  MARGIN DECIMAL(10,2),
  INCORPORATOR_MOB VARCHAR(32),
  DLR_REGION_ID DECIMAL(4,0),
  DLR_SECTOR_ID DECIMAL(4,0),
  REVOKE_DATE TIMESTAMP,
  ADDRESS VARCHAR(128),
  CREATED_TIME TIMESTAMP,
  UPDATED_TIME TIMESTAMP,
  PRIMARY KEY (DEALER_ID)
);

等到维护select文件时再建索引。

 

 3、编辑“转换---表输入”

 源表来自DMS连接 

 

4、编辑“输出---插入/更新”

我现在猜测:“提交记录数量”表示流的缓存大小。

现在是全量同步,而非增量同步。

连接输入和输出,保存该转换到一个文件夹(我选择帆软的报表文件夹)

 

5、新建作业,3分钟转换一次,成功执行,日志为:

首次从源表Input 550 条记录到内存,从内存Write 550 到“表输入”;从表输入Input 550到内存, 从内存Output 550到流, 从流里Read 550, Write 550到目标表, Update 0, Error 0 ?

其后从源表Input 550 条记录到内存,从内存Write 550 到“表输入”;从表输入Input 550到内存, 从内存Output 0到流, 从目标表Read 550到内存, 从内存Write 550到目标表, Update 533, Error 0 ?

上面的推测有点混乱;首次我将缓存设置为10000行,所以日志不同,有可能因此。 

【本次使用结束】

 

标签:经销商,转换,dealers,bb,DECIMAL,kettle,550,DMS,内存
来源: https://www.cnblogs.com/EverNote/p/15187795.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有