页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

...

  • 历史数据不会变动  --入库方式可以使用”追加“。
  • 表内有“时间戳”字段,可用来和"更新时间"做对比实现增量更新,--入库方式可以使用”更新与插入“。


 2 示例介绍

2.1 增量数据入库方式-追加示例

  • 追加适合的场景:历史数据不会变动 的情况。
  • 追加:每次抽取,根据“用于标识新增数据的字段”判断数据库中的数据是否为新增数据,对数据库的新增数据进行抽取,并追加在MPP数据库中,如下图所示:

  • 适合追加的场景:历史数据不会变动 。

产品自带数据源northwind数据库下的“orderDetails”表,”produts“表进行为例进行说明。

...

5、再次点击【立即抽取】,可以看到“orderDetails”已追加了新的数据。

2.2 增量数据入库方式-更新与插入示例

  • 更新与插入的使用场景:数据量较大,历史数据会进行变更。并且表内有“时间戳”字段,可用来和"更新时间"做对比实现增量更新。
  • 更新与插入:每次抽取,根据“用于判断数据在缓存库中是否存在的主键字段”逐行判断该行数据在缓存库中是否存在,如果不存在则插入,如果存在则更新,如下图所示:

...

注意
title前提条件

要实现增量抽取的“更新与插入”,必须满足两个条件:

1、必须指定主键。

2、必须指定更新时间: 数据库中源表必须要有数据的更新时间,如果更新时间为空或null,更新与插入会失败。

...

由于刚已经映射了参数“UpdateTime”,所以“用于标识新增数据的参数” 选择“UpdateTime”、”与参数关联的字段“的选择“UpdateTime”字段, 如下图所示:

选项
选项1选项2说明
按参数筛选用于标识新增数据的参数
  • 原理:假设“与参数关联的字段”是 field,上一次抽取时 field 字段的最大值表示为 last_max(field),则本次抽取获取增量数据的过滤条件是 field > last_max(field)然后通过“用于标识新增数据的参数”,将上述过滤条件传递到查询中。
  • 只能选择与该表/查询映射的参数,如果没有映射参数,将不能进行增量抽取。
与参数关联的字段只能选择数值型、日期、日期时间类型的字段。
增量数据入库方式追加原理:本次抽取的增量数据,全部追加到缓存库中。
更新与插入

原理:本次抽取的增量数据,利用“主键字段”逐行判断该行数据在缓存库中是否存在,如果不存在则插入,如果存在则更新。

”用于判断数据在缓存库中是否存在的主键字段“ 选项:

  • 可以选择多个字段作为联合主键
  • 主键字段不能与”参数关联的字段“一样,否则无法插入数据。
立即抽取

如果是第一次抽取,则会把整个模型都执行全量抽取,如果非第一次抽取,则会根据上一次抽取时UpdateTime字段的最大值为参数默认值进行抽取。

立即覆盖抽取
即全量抽取,如果其他表/查询没有更改过,只会抽取该表的数据;如果其他表/查询调整了结构也会把调整结构的表都抽取了。

...

数据模型如下图:

1、【orders】入库方式"追加"

...

场景1:在[orders]

...

表中,初始数据量为1000w,分别增量“追加”100w、500w性能情况:

表名称

原始数据

列数

全量抽取耗时

增量数据

增量抽取耗时

(重新计算历史数据小宽表)

抽取提升效率

orders

1kw

25

263s

(源表:233s + 小宽表:30s)

100w

98s

(源表:51s+ 小宽表37s)

2.7倍

500W

186s

(源表:120s+ 小宽表66s)

1.4倍

customers

200w

14

97s

(源表:85s + 小宽表:12s)

...




场景2:在[orders]

...

表中,初始数据量为1亿,分别增量”追加“100w、500w性能情况:

表名称

原始数据

列数

全量抽取耗时

增量数据

增量抽取耗时

(重新计算历史数据小宽表)

抽取提升效率

orders

1亿

25

2084s

(源表:1809s + 小宽表:262s)

100w

434s

(源表:172s+ 小宽表262s)

4.8倍

500W

584s

(源表:296s+ 小宽表288s)

3.5倍

customers

200w

14

97s

(源表:85s + 小宽表:12s)




2、【orders】入库方式"

...

更新与插入"

...

场景1:在[orders]

...

表中,初始数据量为1000w,分别增量”更新与插入“100w、500w性能情况:

表名称

原始数据

列数

全量抽取耗时

增量数据

增量抽取耗时

(重新计算历史数据小宽表)

抽取提升效率

orders

1kw

25

263s

(源表:233s + 小宽表:30s)

100w

140s

(源表:51s+ 小宽表37s+合并42s)

1.9倍

500W

234s

(源表:120s+ 小宽表66s+ 合并48s)

1.1倍

customers

200w

14

97s

(源表:85s + 小宽表:12s)





场景2:场景4:在[orders]表原始数据1亿,增量100w和500w数据,插入与更新情况)表中,初始数据量为1亿,分别增量”更新与插入“100w、500w性能情况:

表名称

原始数据

列数

全量抽取耗时

增量数据

增量抽取耗时

(重新计算历史数据小宽表)

抽取提升效率

orders

1亿

25

2084s

(源表:1809s + 小宽表:262s)

100w

740s

(源表:172s+ 小宽表262s + 合并306s)

2.8倍

500W

904s

(源表:296s+ 小宽表288s+合并320s)

2.3倍

customers

200w

14

97s

(源表:85s + 小宽表:12s)





问题1: 我的原始数据是3000w,每天增量10w,列数:60列,抽取大概需要多久?

...