如何创建一个抽取任务【数据加工厂】【入门帖】

ETL 未结 1 295
雷震子
雷震子 LV4 2023年9月2日 10:59 发表
<h3><span style="font-weight: bold;">数据加工厂的作用就是进行数据的抽取、清洗、转换、加载。。。主打的就是一个数据处理。</span></h3><h3><span style="font-weight: bold;">整体流程是 先做<span style="color: rgb(255, 0, 0);">【抽取任务】</span>,再由任务组成<span style="color: rgb(249, 150, 59);">【抽取作业】</span>,最后由<span style="color: rgb(0, 255, 0);">【调度计划】</span>来进行统一定时调度。所以抽取任务是数据处理的基础单元</span></h3><p><img src="http://www.wrenchdata.com:8443/uploaded/202309/20230902102400_fs.png" style="max-width:100%;"><br></p><h3>抽取任务有很多种类型,我们今天先了解一下基础的【抽取任务】</h3><p><img src="http://www.wrenchdata.com:8443/uploaded/202309/20230902102524_49.png" style="max-width:100%;"><br></p><h3>我们看一下抽取任务的各个页签作用</h3><p><img src="http://www.wrenchdata.com:8443/uploaded/202309/20230902102700_i8.png" style="max-width:100%;"><br></p><p><img src="http://www.wrenchdata.com:8443/uploaded/202309/20230902103118_2u.png" style="max-width:100%;"><br></p><p><img src="http://www.wrenchdata.com:8443/uploaded/202309/20230902103635_3w.png" style="max-width:100%;"><br></p><h3><span style="color: rgb(255, 0, 0);">一般情况下做抽取任务,抽取维度表或者抽取全量数据表会选择【清空目标表】,增量抽取会选择【删除本批次数据】</span></h3><p>再有就是往目标表里插入数据的关键了。就是【源表查询语句】的编写,这里sql语句主要就是查询语句,目标表里的所有字段在这里进行列示即可。</p><p>比如我的目标表的建表语句如下:</p><pre><code>create table ods_orderDetail<br>(<br> orderID varchar(50) , ----订单号<br> customerName nvarchar(200) , ---客户<br> orderMoney decimal(24,2) , ---订单金额<br> orderDate varchar(20) ---批次关键字(比如是按照月来抽取,那这个字段就是年月格式,比如202006<br>)</code></pre><p>那么抽取任务里的【源表查询语句】可能会这样编写如下:</p><pre><code>SELECT <br> b.订单ID ,<br> e.公司名称 as 客户 , <br> round(a.数量 *a.单价 * (1- a.折扣 ),2) as 销售金额 ,<br> h.AccountTime as 增量批次<br> FROM 订单明细 a JOIN 订单 b ON a.订单ID = b.订单ID<br> LEFT JOIN 客户 e ON b.客户ID = e.客户ID <br> left join dim_time h on b.年月 = h.accounttime</code></pre><p>如果加上增量的批次变量,那么是这样写的</p><pre><code>SELECT <br> b.订单ID ,<br> e.公司名称 as 客户 , <br> round(a.数量 *a.单价 * (1- a.折扣 ),2) as 销售金额 ,<br> h.AccountTime as 增量批次<br> FROM 订单明细 a JOIN 订单 b ON a.订单ID = b.订单ID<br> LEFT JOIN 客户 e ON b.客户ID = e.客户ID <br> left join dim_time h on b.年月 = h.accounttime<br> where h.AccountTime = ${batchCode} ---为了按照月进行增量</code></pre><p>那么将上方sql放在抽取任务里,进行查询预览,效果如下</p><p><img src="http://www.wrenchdata.com:8443/uploaded/202309/20230902105135_uf.png" style="max-width:100%;"><br></p><p><br></p><p>如果预览可以根据增量的变量返回结果。说明sql写的没有问题。</p><p><img src="http://www.wrenchdata.com:8443/uploaded/202309/20230902105316_4w.png" style="max-width:100%;"><br></p><h3>将批次字段设置完成后,这个任务就算是完成了。</h3><h1><span style="color: rgb(255, 0, 0);">做抽取任务需要注意的几个点是:</span></h1><h2><span style="color: rgb(255, 0, 0);">1、查询语句的字段名称不要出现重复的,如果需要则进行as 别名处理;</span></h2><h2><span style="color: rgb(255, 0, 0);">2、做增量抽取的时候,要区分出来是按照年,月,日,还是其他进行增量。系统是根据年(yyyy)月(yyyymm)日(yyyymmdd)这样的格式来返回值的,比如今天是2023-08-31,那么自动抽这个任务的时候,如果是按月抽取,那么给的值是“202308”,系统会根据批次关键字段把202308的都先删除了。然后再根据查询语句进行插入。查询语句的字段也要按照格式化符合批次字段的格式要求。(比如我源表里的字段是yyyy-mm-dd,那么也要格式化成yyyymm)</span></h2><h2><span style="color: rgb(255, 0, 0);">3、尤其是做增量的时候一定要进行查询预览,测试一下是否能按照批次返回有效数据</span></h2><p><br></p>
收藏(0)  分享
相关标签: 转换任务
注意:本文归作者所有,未经作者允许,不得转载
1个回复