历史版本29 :增量更新概述 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 应用场景

若数据库昨天已经做了全量更新,现在只想增加今天一天的数据到数据库,这种情况下用户就可以使用增量更新功能。适合使用增量更新进行更新的数据有以下特征:

适合使用增量更新的数据表
单表总数据量较大,比如百万以上的数据 
表内有类似时间戳作用的字段,比如根据时间戳字段与更新时间的对比实现增量更新
表历史数据修改频率较低

若表的数据量比较小,或者缺少时间标记作用的字段,则更适合使用全量更新

1.2 功能简介

增量更新是指对表中新增加、新删除和新修改的数据进行更新,即将数据库中有变化的数据更新到引擎中存储,并保持以前的数据不变动。分类如下所示:

1591791056816665.png

增量更新只更新有变化的数据,因此其更新效率较全量更新有明显的提高。在BI中的增量更新均是在 单表更新 中实现的。实现步骤如下所示:

步骤内容
1. 对比更新时间用 sql 执行 where 语句uptime >上次更新时间(也可以不用参数“上次更新时间”,可自定义一个),将数据库中更新的时间与上次更新的时间进行对比,当某条数据在数据库里的更新的时间大于上次更新的时间,便说明该数据是未更新的数据。
2. 读取到数据库中表的变化表的变化分为:增加、删除、修改,通过 sql 语句首先识别到数据变化的行,再识别变化的类型是哪一种,从而确定属于哪一种增量更新。
3. 更新数据将未更新的数据更新到引擎中,对于增量增加、增量删除及增量修改的操作在 BI 的 单表更新 中完成。

1.3 注意事项

  • 不支持增量更新的表:服务器数据集、做了行列转换、自循环列的基础表、Excel数据集、自助数据集。

  • 基础表必须被 全量更新 过才可以做增量更新。

  • 全量更新为将数据库中所有数据覆盖至 BI 数据表中,增量更新更新数据则取决于 SQL 语句。

注1:基础表实现增量更新后,自助数据集的更新可以参考 更新自助数据集 ,且实现的是全量更新。

注2:Excel 数据集不能增量更新,只能追加上传,详情请参见 追加上传

2. 增量增加编辑

增量增加在使用时一般包含两种情况:普通增量增加时间戳增量增加

2.1 普通增量增加

1)进入数据准备>零售行业>销售明细,点击更新信息,选择单表更新,如下图所示:

23.png

2)普通增量增加为将表中的所有数据增加到当前表。

比如选择增量增加,输入获取销售明细表的 SQL :select * from new_salesdetail,表示将new_salesdetail表中所有数据全部增加到已有的表中。 如下图所示:

1591783666523444.png

3)点击预览,可查看该 SQL 执行的结果,如下图所示:

1591783761447603.png

注1:示例 SQL 会将数据库数据全量增加至数据表中,而若为全量更新,则会将数据库数据覆盖在 BI 中。

注2:如果查询的列数与表中列数不符,会出现执行结果缺少字段的信息提示。因此执行 SQL 的查询列数与当前表中应一致。

2.1.1 立即增量更新

预览 SQL 无误后,点击可选择立即更新>增量更新,点击确定,则会将数据库中new_saledetail 数据表都增量更新至对应数据表下,如下图所示:

1591789826640293.png

2.1.2 定时增量更新

点击可选择定时设置,更新方式选择增量更新,等待更新成功后,点击确定,则会将数据库中new_saledetail 数据表都增量更新至对应数据表下,如下图所示:

487.png

2.2 时间戳增量增加

时间戳增量增加可使用参数,设置时间满足大于上次更新时间的数据进行更新。详情请参见:增量更新简单示例 

2.2.1 时间戳参数说明

增量更新参数包括上次更新时间当前更新时间,如下图所示:

1591786909131065.png

  • 「上次更新时间」与「当前更新时间」均为对比参数,其使用方式是直接单击该参数名即可输入到设置框内,并使用函数将它们从字符串转化为时间类型。

  • 「上次更新时间」表示的是上一次更新开始的时间;

  • 「当前更新时间」是指本次更新的开始时间;

  • 通过两个时间点,将更新的数据圈定到从上次开始更新时到本次更新之间的新数据上,这样每次更新都会以上次的终点为起点进行更新,以保证数据的准确和完整。

注1:「当前更新时间」这个参数并不需要强制使用,它是为了防止出现在更新的 SQL 语句查询时,出现插入数据的情况,此时就不易判断该数据是否被更新;使用「当前更新时间」作为下限,可以将查询 SQL 语句时的数据插入放到下次的更新中进行更新,不会出现遗漏或重复插入。如没有上述情况,使用「上次更新时间」即可。

注2:「增量更新」是以行为单位的,增量增加是对引擎中保存的数据表直接添加行,「增量删除」是直接删除行。

3. 增量删除编辑

增量删除会根据查询出来的字段名与 FineBI 中存储的字段名自动匹配,根据查询出来的结果进行数据的删除。增量删除一般也包含两种情况:普通增量删除和时间戳增量删除。

注:只要是查询出来的字段名与 Spider 引擎存储中的字段名匹配,就会将这部分的数据进行删除。  

3.1 普通增量删除

此时增量删除选项就好像一个删除按钮,只需输入查询语句找到需要删除的部分数据即可。

1)进入数据准备>零售行业>销售明细,点击更新信息,选择单表更新,如下图所示:

23.png

2)例如选择增量删除,输入 SQL 

select 1 as 店号 from new_salesdetail:表示将 new_salesdetail 表中店号为 1 的数据删除掉;

select 1 as 店号, 2 as 楼层 from new_salesdetail:表示将 new_salesdetail 表中店号为 1 以及楼层为 2 的数据删除掉;

select 店号 from new_salesdetail where 楼层 in (1,2,3):表示删除楼层是 1,2,3 的数据;

select 店号 from new_salesdetail where 楼层 in (1,2,3) and 店号 in (2,3,4):表示删除楼层是 1,2,3 以及店号是 2,3,4 的数据。

如下图所示:

1591786392669318.png

3)点击预览可看到查找到需要删除的部分,如下图所示:

1591786469843359.png

3.1.1 立即增量更新

预览 SQL 无误后,点击可选择立即更新>增量更新,等待更新成功后,点击确定,则会在数据表中删除预览的内容,如下图所示:

1591790509670657.png

3.1.2 定时增量更新

点击可选择定时设置,更新方式选择增量更新,等待更新成功后,点击确定,则会在数据表中删除预览的内容,如下图所示:

38.png

3.2 时间戳增量删除

增量删除也可使用参数,设置时间满足大于上次更新时间的数据进行更新。比如将上次更新时间与本次更新时间之间查询出来的字段进行删除。详情请参见: 增量更新简单示例 

4. 增量修改编辑

Spider 引擎中没有单表更新中的增量修改项,可以通过增量删除增量增加进行功能组合来实现增量修改的场景。

注:当用户同时写入了增量增加和增量删除语句时,会先执行增量删除语句,再执行增量增加语句。

例如如下两种场景:

4.1 场景一

1)例如每天的增量数据表new_salesdetail包含两部分:用户新录入的数据和用户修改过的历史数据。如果想将这种数据增量到引擎中,

可以先删除表new_salesdetail数据,也就是将引擎中已保存的表new_salesdetail的数据全部删除,选择增量删除,输入SQL :select * from  new_salesdetail,点击可选择立即更新>增量更新,或者设置定时更新,等待更新成功后,点击确定,则会在数据表中删除预览的内容,如下图所示:

47.png

2)把表new_salesdetail的数据全部增加进入引擎中,即将增量数据全部作为新增数据重新写入引擎存储中,点击增量增加,输入SQL :select * from  new_salesdetail,可选择立即更新>增量更新,或者设置定时更新,等待更新成功后,点击确定,则会在数据表中增加预览的内容,如下图所示:

00.png

4.2 场景二

例如用户可能对历史数据进行增删改的操作,为了保证数据的准确性,可以对数据进行一个增量组合。比如用户修改了前三天的数据,可以删除前三天的数据,并增量增加前三天+今天的数据,这样可以不用关心用户具体做了什么增删改的操作,全部更新过来。

详情参见:增量更新简单示例

5. 注意事项编辑

5.1 增量更新时间参数

5.1.1 未设置时间参数

若在使用增量更新时,未使用参数上次更新时间本次更新时间,则在第一次进行着增量增加操作后在进行一次增量增加,那么数据会再次进行增加,而不是覆盖。

1)例如选择增量增加,添加 SQL :SELECT * FROM DEMO_CONTRACT where DATE_SUB(CURDATE(), INTERVAL 4 DAY) <= date(合同签约时间),增加最近3天的数据,如下图所示:

443.png

则在增量更新后,已经显示增加一条近 3 天的数据,如下图所示:

000.png

2)再进行一次同样的增量更新操作,此时数据表中会再次增量增加一遍之前增加的数据,而不是进行覆盖,如下图所示:

1591793438226164.png

5.1.2 设置时间参数

若设置了时间参数,第一次进行着增量增加操作后在进行一次增量增加,是否数据再次进行增加取决于增量更新 SQL 的写法。

5.2 增量更新数据冗余

若进行增量更新后,数据冗余,可以对数据表进行 全量更新 或者使用增量删除语句将多余数据删除。