1. 概述编辑
1.1 版本
FineBI 版本 |
---|
5.1 |
1.2 问题描述
用户有时需要对部分数据进行更新,比如某张表只增不减,每天只需要更新增加的部分即可。
1.3 解决思路
使用增量更新。增量更新的逻辑是在被抽取的数据里增加或删除被写的 SQL 选中的部分。通常使用增量更新有两种情况:
1)某张表只增不减,每天只需要更新增加的部分即可。
2)某张表会增会减,但是修改范围一般在一段时间之内,如只会对一张表中近 3 天的内容进行删改。
2. 示例一编辑
对于第一种情况 ,逻辑是只更新添加时间大于上次更新时间的数据即可。
点击下载本例数据:DEMO_CONTRACT.xlsx
2.1 操作步骤
使用 MySQL 数据库下的demo_contract表,需要根据合同签约时间对其进行增量更新。
1)进入业务包下,选择demo_contract表,选择更新信息,点击单表更新,进入设置框,增量更新方式选择增量增加,并且在增量更新输入框中使用 SQL 实现增量更新,如下图所示:
SQL 语句如下所示:
SELECT * FROM demo_contract where 合同签约时间 > str_to_date('上次更新时间','%Y-%m-%d %H:%i:%s')
注: 「上次更新时间」必须用参数点击添加(不能复制添加 ),或者可以使用 SQL 语句「${_last_update_time_}」代替参数「上次更新时间」。其中「str_to_data」表示由系统中保存的「上次更新时间」转换过来的时间,用于和「合同签约时间」做比较。
2)点击预览可以查看到添加时间大于上次更新时间的数据,如下图所示:
3)点击立即更新下拉框,选择增量更新,等待更新完成后,点击确定,更新成功,如下图所示:
2.2 效果查看
1)在更新信息中可以看到更新结果,如下图所示:
2)在数据预览界面即可看到增量更新的数据,如下图所示:
3. 示例二编辑
对于第二种情况,可以同时设置 3 天的增量增加和 3 天的增量删除,FineBI 会自动先执行增量删除,再执行增量更新。
相比更新整张表而言,只改变近 3 天的数据可以大幅提升更新速度。
3.1 操作步骤
使用 MySQL 数据库下的demo_contract表,需要根据合同签约时间对其进行增量更新。
点击下载本例数据:DEMO_CONTRACT.xlsx
3.1.1 删除近 3 天的数据
1)进入业务包下,选择demo_contract表,选择更新信息,点击单表更新,进入设置框,增量更新方式选择增量删除,并且在增量更新输入框中使用 SQL 实现增量更新,如下图所示:
SQL 语句如下所示:
SELECT * FROM demo_contract where DATE_SUB(CURDATE(), INTERVAL 4 DAY) <= date(合同签约时间)
注:SQL 中写的是 4 天,这是因为昨天的 3 天内是今天的 4 天前。
2)点击预览可以查看到添加时间大于上次更新时间的数据,如下图所示:
3)点击立即更新下拉框,选择增量更新,等待更新完成后,点击确定,则删除了近 3 天的数据,如下图所示:
3.1.2 更新近 3 天的数据
1)增量更新方式选择增量增加,并且在增量更新输入框中使用 SQL 实现增量更新,点击预览,如下图所示:
SQL 语句如下所示:
SELECT * FROM demo_contract where DATE_SUB(CURDATE(), INTERVAL 4 DAY) <= date(合同签约时间)
注:可以看到两个 SQL 是完全一致的,这是因为增加和删除都是近 3 天的内容。
2)点击立即更新下拉框,选择增量更新,等待更新完成后,点击确定,则新增了近 3 天的数据,如下图所示:
注:也可以同时设置 3 天的增量增加和 3 天的增量删除,FineBI 会自动先执行增量删除,再执行增量更新。
3.2 效果查看
1)可以在数据预览界面查看到更新后的数据,如下图所示: