数据抽取平台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表发给各个部门,这个功能已经由脚本转 ...
随机推荐
- 怎样在局域网中给网站作ssl认证,使其能以https协议访问(转)
如果要在局域网达到效果需要满足以下几点要求: 1. 证书由可信任的CA机构颁发 2. 证书在有效期 3. 访问地址和证书的认证地址一致 说明: 1. 需要在局域网内构建CA机构 2. 证书的有效期建议 ...
- 阿里云CTF and 其他
RE复现 login_system 这个函数就是判断username,点进去发现是线性方程,用z3解 from z3 import * s=Solver() a=[0]*16 for i in ran ...
- docker高级篇第二章-分布式存储之实战案例:主从容错切换迁移案例
在上一篇,学会了3主3从的Redis集群搭建.那么接下来,我们就来学习Redis集群主从容错切换迁移案例 本次案例从模拟两个场景 1:数据读写存储 a:一个新key数据来了,是否会按照预设的进入槽中? ...
- [JS设计模式]:策略模式及应用-计算奖金、表单验证的实现(5)
介绍 策略模式的意义是定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换.此模式让算法的变化不会影响到使用算法的客户. 实现 举一个例子,比如我们做数据合法性校验,一般是通过swich来实现 ...
- 亮相CCIG2024,合合信息文档解析技术破解大模型语料“饥荒”难题
近日,2024中国图象图形大会在古都西安盛大开幕.本届大会由中国图象图形学学会主办,空军军医大学.西安交通大学.西北工业大学承办,通过二十多场论坛.百余项成果,集中展示了生成式人工智能.大模型 ...
- EF Core – QueryFilter & Interception
主要参考 Global Query Filters Interceptors QueryFilter QueryFilter 就是默认过滤, 非常适合用来做 Soft Delete builder.H ...
- 使用.NET并行任务库(TPL)与并行Linq(PLINQ)充分利用多核性能
前言 最近比较闲,(项目要转Java被分到架构组,边缘化人员,无所事事 哈哈哈哈) 记录一下前段时间用到的.NET框架下采用并行策略充分利用多核CPU进行优化的一个方法 起因是项目中有个结算的方法,需 ...
- go中能比较和不能比较的数据类型
在 Go 语言中,比较操作符(== 和 !=)可以用于许多数据类型,但也有一些数据类型不支持直接比较.下面详细解释哪些数据类型可以比较,哪些不能比较,以及相关的规则和原因. 可以比较的数据类型 布尔型 ...
- iOSwkwebView 打开 TXT/PDF 文件乱码的问题
最近做资料文件下载下来并查看的时候,用 WKWebView 打开office 类型的文件的时候是没问题的,但是打开测试人员上传的一个 TXT/PDF 文件就出现了乱码问题,经过查看,应该是文件的编码问 ...
- 24. echarts 可以画哪些图表
1. 折线图 2. 柱状图 3. 饼图 4. 地图 5. 雷达图 延申问题:画折线图和柱状图哪些配置可以改变样式 1. color 设置每个数据的颜色 2. grid 网格设置图表的大小 3. s ...