数据抽取平台pydatax使用案例---11个库项目使用
数据抽取平台pydatax,前期项目做过介绍:
项目2: 客户有9个分公司,用的ERP有9套,有9个库,不同版本,抽取的同一个表字段长度有不一样,字段可能有多有少,客户ERP核心分公司ERP几个月后有大版本升级。
在2023年12月,当时做这个抽取时,客户只是做一个分公司的,抽取9套其中的一套ERP的Oracle库,当时考虑是否把这9个库的都抽取了,免得后面客户要做,浪费时间再做一遍,太麻烦,问了项目负责人也没说是要把这9个库都抽取过来,没说要做! 到底怎么处理?
想想早晚要做,还是先都抽取了,把他的8家公司的Oracle数据库都抽取过来,各个公司的数据,9张表合并成1张,在表加租户id字段区分:tenant_id 确定是那个公司的,把这个大数据抽取,数据指标计算完成。
到了2024年7月份,客户突然说后续指标计算暂停,要把其他的子公司的数据和计算也加进去,这半年又新参股合并了3家公司,原先有一家去掉。一共要新加7+3=10家公司,为支持该业务需要,pydatax的修改过程如下:
1,JSON抽取模板修改
oracle_gp_table_df_job.json文件加上新加的3个分公司,再原有的json去掉一家公司:
{
"querySql": [ "select SYSdate as etl_create_time,SYSdate as etl_update_time, 'wflsy' as tenant_id,${src_table_columns_wflsy} from wflsy.${src_table_name} ${relation} where ${condition}" ],
"jdbcUrl": [ "jdbc:oracle:thin:@10.0.1.206:1521:erp"]
},
{
"querySql": [ "select SYSdate as etl_create_time,SYSdate as etl_update_time, 'ky' as tenant_id, ${src_table_columns_ky} from ky.${src_table_name} ${relation} where ${condition}" ],
"jdbcUrl": [ "jdbc:oracle:thin:@10.0.1.206:1521:erp"]
},
{
"querySql": [ "select SYSdate as etl_create_time,SYSdate as etl_update_time, 'wfjy' as tenant_id, ${src_table_columns_wfjy} from wfjy.${src_table_name} ${relation} where ${condition}" ],
"jdbcUrl": [ "jdbc:oracle:thin:@10.0.1.206:1521:erp"]
},
2,Python程序修改
以上加上后,同时要在pydatax.py和vprepair.py的脚本上加上3个变量,传递给datax的json模板, 这样每天抽取任务的全量和增量3家新公司数据生效。
src_table_columns_wflsy=get_org_src_columns(src_table_columns,"WFLSY",src_table_name)
src_table_columns_ky=get_org_src_columns(src_table_columns,"KY",src_table_name)
src_table_columns_wfjy=get_org_src_columns(src_table_columns,"WFJY",src_table_name)
" -Dsrc_table_columns_std='" + src_table_columns_std + "' " \
" -Dsrc_table_columns_ky='" + src_table_columns_ky + "' " \
" -Dsrc_table_columns_wflsy='" + src_table_columns_wflsy + "' " \
" -Dsrc_table_columns_wfjy='" + src_table_columns_wfjy + "' " \
" -Ddes_table_columns='"+des_table_columns+"' \" "
这样整个每天11家公司的表全量数据和表增量数据就正常的,全量同步的表数据是每天全量,不用处理,但增量表历史数据怎么抽取过来?
3,增量表历史数据处理
1,将1中的3个Json单独编写成1个json模板,模板的"preSql"中的“truncate table 表“ 数据不再使用。
2,新模板json文件放到对应文件夹下,写一条数据到datax_json中
3,是增量的历史表datax_config的数据copy一份到datax_config_repair中,并将json_id和2中的一致,只按2的新模板抽取数据
4,执行vprepair.py后,数据同步到临时表stg表,再执行select sp_stg();
4, 特殊表处理
商品表,有家公司的商品表,同一个商品有多个,直接抽取商品表,会在该公司有多条数据,客户做了个视图过滤成1条,说抽取这个视图数据就可以,但pydatax的11个库的表名要必须一致,怎么处理?
想想也可以实现,就是对这个商品表单独配置一个抽取JSON模板,如下:dbo.base_${src_table_name} ,当然也可以把这个表名写死,也可以使用。在datax_config表的json_id配置成新的模板,就可以实现单独表的特殊处理。
"querySql": [ "select SYSdate as etl_create_time,SYSdate as etl_update_time, 'zb' as tenant_id,${src_table_columns} from dbo.base_${src_table_name} ${relation} where ${condition}" ],
"jdbcUrl": [ "jdbc:oracle:thin:@192.168.0.17:1521/erpdg"]
},
修改的文件放在压缩包的”11库抽取”文件夹下:
pydatax源码下载地址:
1,https://files.cnblogs.com/files/zping/pydatax.rar
总结:
1,pydatax的灵活性在此项目得到很好的验证
2,其简单的修改就可以快速满足客户的需求
数据抽取平台pydatax使用案例---11个库项目使用的更多相关文章
- Tushare金融大数据开放社区 - 数据抽取案例学习
进入平台介绍 扫码立即注册,更多大数据等你来探索 ! 案例: 导入tushare import tushare as ts 这里注意, tushare版本需大于1.2.10 设置token ts.se ...
- Flink 实践教程-进阶(2):复杂格式数据抽取
作者:腾讯云流计算 Oceanus 团队 流计算 Oceanus 简介 流计算 Oceanus 是大数据产品生态体系的实时化分析利器,是基于 Apache Flink 构建的具备一站开发.无缝连接.亚 ...
- 搭建企业级实时数据融合平台难吗?Tapdata + ES + MongoDB 就能搞定
摘要:如何打造一套企业级的实时数据融合平台?Tapdata 已经找到了最佳实践,下文将以 Tapdata 的零售行业客户为例,与您分享:基于 ES 和 MongoDB 来快速构建一套企业级的实时数 ...
- Tapdata 实时数据融合平台解决方案(一):现代企业数据架构及痛点
作者介绍:TJ,唐建法,Tapdata 钛铂数据 CTO,MongoDB中文社区主席,原MongoDB大中华区首席架构师,极客时间MongoDB视频课程讲师. "怎样可以来搭建一个数据中台? ...
- 大数据计算平台Spark内核解读
1.Spark介绍 Spark是起源于美国加州大学伯克利分校AMPLab的大数据计算平台,在2010年开源,目前是Apache软件基金会的顶级项目.随着 Spark在大数据计算领域的暂露头角,越来越多 ...
- cognos开发与部署报表到广西数据质量平台
1.cognos报表的部署. 参数制作的步骤: 1.先在cognos里面把做好的报表路径拷贝,然后再拷贝陈工给的报表路径. 开始做替换,把陈工给的报表路径头拿到做好的报表路径中,如下面的链接http: ...
- DataPipeline丨新型企业数据融合平台的探索与实践
文 |刘瀚林 DataPipeline后端研发负责人 交流微信 | datapipeline2018 一.关于数据融合和企业数据融合平台 数据融合是把不同来源.格式.特点性质的数据在逻辑上或物理上有机 ...
- 打造实时数据集成平台——DataPipeline基于Kafka Connect的应用实践
导读:传统ETL方案让企业难以承受数据集成之重,基于Kafka Connect构建的新型实时数据集成平台被寄予厚望. 在4月21日的Kafka Beijing Meetup第四场活动上,DataPip ...
- 大数据计算平台Spark内核全面解读
1.Spark介绍 Spark是起源于美国加州大学伯克利分校AMPLab的大数据计算平台,在2010年开源,目前是Apache软件基金会的顶级项目.随着Spark在大数据计算领域的暂露头角,越来越多的 ...
- 基于datax的数据同步平台
一.需求 由于公司各个部门对业务数据的需求,比如进行数据分析.报表展示等等,且公司没有相应的系统.数据仓库满足这些需求,最原始的办法就是把数据提取出来生成excel表发给各个部门,这个功能已经由脚本转 ...
随机推荐
- Linux 扩展磁盘分区
之前安装 Ubuntu 虚拟机时使用的都是默认配置,虚拟机硬盘分配了 60 GB.后来想要扩容,特此记录一下扩容过程. 在操作前请做好备份 首先在 VMware 中修改虚拟硬盘大小. 然后进入虚拟机, ...
- C# WebSocket高并发通信阻塞问题
项目上遇到使用WebSocket超时问题,具体情况是这样的,OTA升级过程中,解压zip文件会有解压进度事件,将解压进度通过进程通信传给另一进程,通信提示超时异常 小伙伴堂园发现大文件使用Zip解压, ...
- c++ 命名的强制类型转换
显式转换:显式将一种类型转换为另一种类型. References: C++中的显示数据类型转换 与命名的强制类型转换相比,旧式的强制类型转换从表现形式上来说不那么清晰明了,容易被看漏,所以一旦转换过程 ...
- SpringBoot 基于注解实现接口的代理Bean注入
SpringBoot 基于注解实现接口的代理Bean注入 在springboot加载时需自己手动将接口的代理bean注入到spring容器中,这样在service层注入该接口类型即可, 1.在Spri ...
- 线性dp:LeetCode122.买卖股票的最佳时机ll
买卖股票 本文所讲解的内容与LeetCode122. 买卖股票的最佳时机ll,这道题题意相同,阅读完本文后可以自行挑战一下 力扣链接 题目叙述: 给定一个长度为N的数组,数组中的第i个数字表示一个给定 ...
- 小tips:CSS3中的background-clip属性(背景的裁剪区域)
CSS3中的background-clip属性,其主要是用来确定背景的裁剪区域,换句话说,就是如何控制元素背景显示区域. 语法如下: background-clip : border-box || p ...
- C# – Record, Class, Struct
前言 之前在 C# – 10.0 已经有介绍过 Record 了. 但之前还没怎么用到, 最近有用到了, 所以特别写多一篇. Class vs Struct 参考: C#详解struct和class的 ...
- ASP.NET Core – Program.cs and Startup.cs 小笔记
前言 ASP.NET Core 6.0 以后, 默认模板去掉了 Program.cs 的 namespace, class 和 Startup.cs, 一开始看会有点懵. 这篇大概记入一下, prog ...
- MyBatis——案例——环境准备
配置文件完成增删改查 准备环境 数据库表 tb_brand -- 创建tb_brand表 create table tb_brand( id int primary k ...
- composer 执行脚本时报错:Error: You made a reference to a non-existent script @php artisan package:discover
composer 执行脚本时报错:Error: You made a reference to a non-existent script @php artisan package:discover. ...