盘点网易有数的所有抽取模式及答疑

1.目前网易有数抽取有几种模式?

大类分:全量抽取和增量抽取。而全量抽取又分覆盖和追加。

所以细分有3种抽取模式,如下图

盘点网易有数的所有抽取模式及答疑 - 图1

2.在介绍抽取的时候介绍几个概念:

源头库:客户存原始数据的库。(数据连接连的那个库)

目标库:有数的数据库(mpp)。

抽取的过程:就是将客户的数据存到有数的数据库中。

3.下面我们介绍着三种抽取模式的特点。

抽取模式 优点 缺点 适用场景
全量抽取-覆盖 简单,数据质量好 大数据量的时候,占用资源 小数据量表
全量抽取-追加 可以帮源头库存历史数据 抽取成功部分,不支持更新 源头库只存增量数据,不存历史数据
增量抽取 对数据增量部分处理,占资源小 抽取成功部分,不支持更新 大数据量表

4.每种抽取模式的原理:

  • 1)全量抽取-覆盖:

举个例子:第一天源头库有100条数据,第二天源头库新增10条,源头库即110条。那么第一天抽取:目标库100条,第二天抽取会删除昨天抽取的100条,然后重新抽取,此时目标库也是110条。

  • 2)全量抽取-追加:

举个例子:第一天源头库有100条数据,第二天源头库新增10条,源头库即110条。那么第一天抽取:目标库100条,第二天会抽取源头库的110条数据,但是不会删除昨天的数据。所以第二天目标库的数据是210条。

这种抽取适用场景很小,源头库只存增量数据,不存历史数据。

场景:源头库存的是当天的交易数据。那么到了明天,该表就会把今天交易数据删掉,存明天的数据,该表只保留一天的数据。

此时我用追加抽取,在目标库我可以看到每个时间节点的数据。

  • 3)增量抽取:

增量抽取的前提必须有增量抽取的字段(增量字段)。一般都是时间类型。

举个例子:今天是2018年8月9日,源头库里面存了2018年1月到8月8号的数据。目标库存了2018年1月到2018年8月4号的数据。(这些日期不是系统日期,是增量字段体现出来的日期)

那么增量抽取如何进行,首先系统会拿增量字段去源头库找到最大日期,找到8月8号是最大时间。那然后去目标库找,找到最大日期是8月4日。那么系统就判别:目标库缺少源头库数据5号到8号的数据。

5.抽取的答疑

  • 1)增量抽取是按系统时间来的?

不是的,是按照增量字段的来的。

  • 2)为什么我不能点击增量抽取

因为缺少增量抽取字段,增量抽取字段必须是数值类型和日期类型,但是按照数据要求,正常增量字段能反应数据增量变化的,一般都是时间类型。

  • 3)抽取中因为有部分数据错误,导致抽取失败,那么有效部分的数据会不会加载到目标数据库中。

只有抽取成功,我们才会把这次抽取的所有数据加载到目标库中。

  • 4)由数据原因引起增量抽取失败,该怎么办?

修复好数据,直接在数据任务里面找到该抽取,点击立即抽取即可。

  • 5)全量抽取覆盖模式,定时抽取完,发现目标库和源头库数据不一致,什么原因?

一般是源头数据库的数据,在定时抽取之前还没有完全更新好。当你手工抽取的时候,数据源数据已经更新完毕了。 导致这种原因是一般源头库数据量增多或者库的性能下降,本来数据源2小时可以更新完所有数据,但是现在需要更新3小时。这时候抽取就会不准。建议联系dba 优化表性能,或者合理调晚抽取时间。

  • 6)建好模型并进行抽取后,只有抽取成功和抽取失败的提示,但是不能确定数据是否被成功抽取并插入到宽表中,我能找到的验证方法是点击模型一直往下翻看数据,如果宽表中历史数据较多的话,很难找到刚跑出来的记录,该怎么办?

可以在数据模型里面做一些筛选,然后看宽表。只要数据模型不保存,那些筛选就不会被添加。

  • 7)在增量抽取下,重新抽取是什么意思?

重新抽取会选择时间段,抽取时间和增量字段无关。重新抽取会重跑在选择的时间段下面该数据模型的所有抽取任务。

如果点击立即抽取有会怎么样的操作呢?首先系统会识别目前源头库最大的时间,8月13号,然后目标库目前也有13号数据,所以点击立即抽取,只会重抽最新的一天数据。

  • 8)抽取是以数据模型为单位的吗?

不是的。数据模型里面有多个物理表,那么该模型就有多个抽取任务。同时自定义SQL中有多个物理表,那么抽取是怎么进行的,我们只会把这个自定义sql的结果存到目标库中,不会对其中的物理表抽取。

所以抽取的基本单位是物理表和自定义SQL,而不是数据模型。这也解释了增量抽取中,在数据模型那里将字符型转化成日期型做增量抽取不行,但是在自定义sql 和物理表做转化,该字段才会在增量抽取中添加成功。