...
- 历史数据不会变动 --入库方式可以使用”追加“。
- 表内有“时间戳”字段,可用来和"更新时间"做对比实现增量更新,--入库方式可以使用”更新与插入“。
2 示例介绍
2.1 增量数据入库方式-追加示例
- 追加适合的场景:历史数据不会变动 的情况。
- 追加:每次抽取,根据“用于标识新增数据的字段”判断数据库中的数据是否为新增数据,对数据库的新增数据进行抽取,并追加在MPP数据库中,如下图所示:
- 适合追加的场景:历史数据不会变动 。
以产品自带数据源northwind数据库下的“orderDetails”表,”produts“表进行为例进行说明。
...
5、再次点击【立即抽取】,可以看到“orderDetails”已追加了新的数据。
2.2 增量数据入库方式-更新与插入示例
- 更新与插入的使用场景:数据量较大,历史数据会进行变更。并且表内有“时间戳”字段,可用来和"更新时间"做对比实现增量更新。
- 更新与插入:每次抽取,根据“用于判断数据在缓存库中是否存在的主键字段”逐行判断该行数据在缓存库中是否存在,如果不存在则插入,如果存在则更新,如下图所示:
...
注意 | ||
---|---|---|
| ||
要实现增量抽取的“更新与插入”,必须满足两个条件: 1、必须指定主键。 2、必须指定更新时间: 数据库中源表必须要有数据的更新时间,如果更新时间为空或null,更新与插入会失败。 |
...
由于刚已经映射了参数“UpdateTime”,所以“用于标识新增数据的参数” 选择“UpdateTime”、”与参数关联的字段“的选择“UpdateTime”字段, 如下图所示:
选项1 | 选项2 | 说明 |
---|---|---|
按参数筛选 | 用于标识新增数据的参数 |
|
与参数关联的字段 | 只能选择数值型、日期、日期时间类型的字段。 | |
增量数据入库方式 | 追加 | 原理:本次抽取的增量数据,全部追加到缓存库中。 |
更新与插入 | 原理:本次抽取的增量数据,利用“主键字段”逐行判断该行数据在缓存库中是否存在,如果不存在则插入,如果存在则更新。 ”用于判断数据在缓存库中是否存在的主键字段“ 选项:
| |
立即抽取 | 如果是第一次抽取,则会把整个模型都执行全量抽取,如果非第一次抽取,则会根据上一次抽取时UpdateTime字段的最大值为参数默认值进行抽取。 | |
立即覆盖抽取 | 即全量抽取,如果其他表/查询没有更改过,只会抽取该表的数据;如果其他表/查询调整了结构也会把调整结构的表都抽取了。 |
...
数据模型如下图:
1、【orders】入库方式"追加"
...
场景1:在[orders]
...
表中,初始数据量为1000w,分别增量“追加”100w、500w性能情况:
表名称 | 原始数据 | 列数 | 全量抽取耗时 | 增量数据 | 增量抽取耗时 |
(重新计算历史数据小宽表)
抽取提升效率 | |||
orders | 1kw | 25 | 263s |
100w | 98s |
2.7倍 | |
500W | 186s |
1.4倍 | |||
customers | 200w | 14 | 97s |
...
场景2:在[orders]
...
表中,初始数据量为1亿,分别增量”追加“100w、500w性能情况:
表名称 | 原始数据 | 列数 | 全量抽取耗时 | 增量数据 | 增量抽取耗时 |
抽取提升效率 | |||
orders | 1亿 | 25 | 2084s |
100w | 434s |
4.8倍 | |
500W | 584s |
3.5倍 | |||
customers | 200w | 14 | 97s |
2、【orders】入库方式"
...
更新与插入"
...
场景1:在[orders]
...
表中,初始数据量为1000w,分别增量”更新与插入“100w、500w性能情况:
表名称 | 原始数据 | 列数 | 全量抽取耗时 | 增量数据 | 增量抽取耗时 |
(重新计算历史数据小宽表)
抽取提升效率 | |||
orders | 1kw | 25 | 263s |
100w | 140s |
1.9倍 | |
500W | 234s |
1.1倍 | |||
customers | 200w | 14 | 97s |
场景2:场景4:在[orders]表原始数据1亿,增量100w和500w数据,插入与更新情况)表中,初始数据量为1亿,分别增量”更新与插入“100w、500w性能情况:
表名称 | 原始数据 | 列数 | 全量抽取耗时 | 增量数据 | 增量抽取耗时 |
抽取提升效率 | |||
orders | 1亿 | 25 | 2084s |
100w | 740s |
2.8倍 | |
500W | 904s |
2.3倍 | |||
customers | 200w | 14 | 97s |
问题1: 我的原始数据是3000w,每天增量10w,列数:60列,抽取大概需要多久?
...