1.描述编辑
在 增量更新 中用户已经了解增量更新的相关功能,下面我们以时间戳增量增加为例,来简单介绍增量更新的使用。
2. 实现思路编辑
要对表 A 进行增量更新,则需要有个对照表 B 来记录表 A 的增删改,因此,我们要创建两个表,表 A 和表 B ,并确保表 A 的增删改会记录到表 B 中。然后使用 BI 增量更新中的增量增加更新方式即可。
3. 示例编辑
下面以 mysql 数据库进行示例:
3.1 准备
1)在 mysql 数据库中创建两个表,表 A 和表 B ,A 表是需要进行增量更新的表,B 表字段包括更新时间(判断是否为未更新数据)、A 表的主键(标识 A 表变化的行)以及更新类型(标识更新类型)。
创建表A并命名为增量更新,添加字段,如下图所示:
添加数据,如下图所示:
创建表 B 并命名为 usermodify,添加字段,其中 uptime 为更新时间、uptype 为更新类型、userID 为 A 表的主键,如下图所示:
注:表 B 不要设置 userID 和 uptype 为主键,否则对表 A 进行增删改的时候会报错,为了方便起见,可以不设置主键。
2)对表「增量更新」添加触发器来写入数据,如下图所示:
写入的格式如下:
create trigger <触发器名称> after insert/delete/update on <表名> for each row begin insert into usermodify(UserID,uptime,uptype) values(new.UserID,now(),'<更新类型>');end
例如:
增量增加:create trigger `ad` after insert on `增量更新` for each row begin insert into usermodify(UserID,uptime,uptype) values(new.UserID,now(),'add');end
增量删除:create trigger 'del' after delete on '增量更新' for each row begin insert into usermodify(UserID,uptime,uptype) values(old.UserID,now(),'del');end
此时,对表增量更新进行增删改操作,修改就会记录在表 usermodify 。
3)将表增量更新添加到 BI 业务包中,可以看到只有之前添加的一条数据,如下图所示:
4)在 mysql 数据库中给表增量更新添加一条数据,如下图所示:
可以看到表 usermodify 中添加了一条记录,并记录了表增量更新修改的时间,如下图所示:
3.2 设置增量更新
1)在 BI 中点击更新设置,可以看到上次更新时间为 2019-11-15 10:29:02 ,这也就是增量更新的上次更新时间。而上面增加数据的时间为 2019-11-15 10:31:57 ,说明在上次更新之后我们增加了数据。点击单表更新,设置时间戳增量更新,如下图所示:
例如:
增量增加:SELECT a.* from 增量更新 a,usermodify b where a.userID=b.userID and b.upType='add' and b.uptime>str_to_date('上次更新时间','%Y-%m-%d %H:%i:%s') and b.uptime < str_to_date('当前更新时间','%Y-%m-%d %H:%i:%s')
增量删除:
SELECT b.userID from usermodify b where b.uptype = 'del' and b.uptime>str_to_date('上次更新时间 ','%Y-%m-%d %H:%i:%s') and b.uptime < str_to_date('当前更新时间','%Y-%m-%d %H:%i:%s')
注:上次更新时间和当前更新时间都需点击上方参数选中,不能手动输入。
2)点击预览,即可查看到增量更新之前添加的一条数据。如下图所示:
3.3 效果查看
此时我们点击立即更新,即可看到增量更新表中成功更新,如下图所示: