1. 概述
1.1 应用场景
若数据库中有一张表,每天都会新增数据。这时候用户可以使用「增量更新」,只将每天新增的数据更新到 FineBI 中。这样就不需要更新整张数据表,节省了更新时间和更新资源。
1.2 功能简介
满足以下条件的数据表,比较适合使用增量更新
表内有「时间戳」字段,可用来和「更新时间」做对比实现增量更新
历史数据不会变动
增量更新的表常用于频繁更新且数据量比较大的表。若是单表的数据量比较小,或者一个月才更新一回,那使用全量更新也没问题。
1.3 注意事项
2. 操作简介
选中要增量更新的表,在「更新信息」下找到「单表更新」,如下图所示:
进入到单表更新设置界面如下图所示:
可以看到有两种增量更新方式:增量增加、增量删除
2.1 增量增加
在下方写入 SQL 语句取数,「增量增加」会将从数据库中取出来的数据加到 FineBI 引擎中,如下图所示:
常用于需要定时新增数据的情况。详细操作可参见:增量增加示例
2.2 增量删除
在下方写入 SQL 语句,系统会从 FineBI 引擎中取出该部分数据进行删除,如下图所示:
用户可以通过「增量删除」删除 FineBI 引擎中不需要的数据。不过增量删除很少单独使用,通常情况下是用于修改数据,可参见本文 2.3 节。
2.3 增量修改
搭配使用「增量增加」和「增量删除」,比如说先删除 FineBI 中一部分数据后,再将数据库中的数据加入到 FineBI 引擎中。
详细操作可参见:增量修改示例
2.4 设置定时增量更新
FineBI 支持定时增量更新,详细操作可参见 增量增加示例 2.3 节。
3. 注意事项
3.1 增量更新重复执行导致数据重复
若用户增量更新时不小心重复更新,导致 FineBI 中数据重复怎么办?
这时候只需要执行一次全量更新,数据库的数据会重新覆盖 FineBI 引擎中的数据,从而保证 FineBI 引擎中的数据和数据库保持一致。
3.2 增量删除后磁盘空间不变化
用户在进行增量删除后,发现磁盘空间没有相应减少。
这是因为 FineBI 在进行增量删除后不会立即释放磁盘空间,而是先将数据标记为删除。
当标记删除的数据量达到一定数量时, 就会一起删除释放磁盘空间。
3.3 数据库与 BI 服务器的系统时间不一致
当FineBI服务器的系统时间与数据库的时间不一致时,容易出现重复更新的情况
建议在设置增量更新语句时,设置为「where 时间 > 上次更新时间 and 时间 < 当前更新时间 」。