kettle导数删除并插入更新数据_20161130

这里有3个表 仅是时间维度不同 天 周 月,现在需要把昨天数据每天添加进入这3个表

由于业务上会有退货等情况,因此需要先把这些表原来的部分数据删除 再从那个时间点进行更新。

天需要先删除前7天的数据,周需要删除前2周数据,月需要删除2个月之前数据 以保证数据准确

技术分享

kettle 中提供了执行SQL脚本控件,因此我们先删除原来的数据,以第一个执行SQL脚本为例。

1、删除时间为天维度的表前7天的数据

DELETE  FROM `tb010_02d` WHERE 在线日期>=DATE_ADD(CURRENT_DATE,INTERVAL -7 DAY)

技术分享

2、进行表的数据插入 表输入步骤 where 条件以前7天那个时间日期为起点

SQL:

SELECT d.ID,a.城市,a.在线日期,c.商品分类一级,c.商品分类二级,c.商品分类三级,a.产品ID,c.产品名称,b.汇总单品量,订单额
FROM (
    SELECT 城市,DATE(在线日期) AS 在线日期,产品ID
    FROM `a010_dynamic_产品`
    WHERE 在线日期>=DATE_ADD(CURRENT_DATE,INTERVAL -7 DAY) AND 在线日期<CURRENT_DATE
    GROUP BY 城市,DATE(在线日期),产品ID
) AS a
LEFT JOIN (
    SELECT 城市,DATE(订单日期) AS 订单日期,产品ID,SUM(汇总单品量) AS 汇总单品量,SUM(金额) AS 订单额
    FROM `a003_order` 
    WHERE 订单日期>=DATE_ADD(CURRENT_DATE,INTERVAL -7 DAY) AND 订单日期<CURRENT_DATE AND 金额>0 
    GROUP BY 城市,DATE(订单日期),产品ID
) AS b ON a.城市=b.城市 AND a.产品ID=b.产品ID AND a.在线日期=b.订单日期
LEFT JOIN `a002_产品` AS c ON a.产品ID=c.产品ID
LEFT JOIN `a000_city` AS d ON a.城市=d.城市

脚本设置:

技术分享

 

 3、表输出步骤。

千万不能勾选裁剪表选项 勾选上会把表数据全部删除只导入前7天的数据

技术分享

 

文章来自:http://www.cnblogs.com/Mr-Cxy/p/6119814.html
© 2021 jiaocheng.bubufx.com  联系我们
ICP备案:鲁ICP备09046678号-3