1. 概述
我们在建设数据仓库、数据集市的过程中,通常使用 ETL 工具把数据从“源库”抽取到“目标库”。“源库”中的历史数据,通常数据量特别大,比如有几千万甚至数亿条记录,而历史数据通常又不发生变化。在抽取数据的过程中,如果我们选择全量抽取,对于那些根本不会发生变化的历史数据,也抽取一遍,不仅没有任何意义,还要浪费大量的资源和时间。尤其是当有数亿条数据、并且需要进行复杂的数据加工时,很可能要耗费数小时,根本无法满足数据加工的时效性要求。因此,我们可以选择在进行 ETL 抽取的过程中,对数据进行 增量抽取,只抽取发生变化的部分。这样就可以让数据抽取的数据量变少,数据加工的时间变短,从而满足时效性要求。
2. 场景说明
我们在把数据从“源库”抽取到“目标库”的过程中,需要仔细分析要抽取的数据的变化情况。
- 对于很多“维度表”数据,比如产品、机构、客户等,它们可能随时都会发生变化,比如某个属性值改变。而如果源库中又不标识发生变化的时间戳,对于此种情况,我们只能选择全量抽取。
- 但对于很多“事实表”数据,比如订单表、订单明细表,通常只有最近的数据会发生变化。或者此类表中,我们会标记发生变化的那些记录,其表中有一个数据变更的时间戳字段。对于这些情形,我们就可以选择增量抽取了。
下面我们要抽取的数据是这样一张表,“每日主流热销车销售数据”表,其中有一个“销售日期”字段,此表的数据每天更新,但只更新前一日数据,更早的历史数据不会发生变化。下面我们就以此表为例,介绍如果通过 Smartbi “自助ETL/作业流”完成数据的增量抽取。
3. 自助ETL中配置增量抽取
在自助ETL中,要进行数据的增量抽取,需要借助“参数”的帮助,并在数据的“输入”节点上配置数据过滤。详细过程说明如下。
3.1 定义抽取的参数
- 在工具栏上点击”... 查看更多“按钮,然后点击下拉菜单中的”参数管理“菜单项。如果发现”参数管理“菜单项是灰色的,无法点击,先“保存”此ETL,然后再继续操作。
- 在弹出的“参数管理”对话框上,新建一个参数。
- “参数名”,随便取一个,比如“抽取日期”。
- 然后指定“参数类型”、数据“类型”。
- “参数值”,这里指定的参数值,只在ETL开发调试中用得到它。当把ETL发布到正式环境时,则通过作业流把要”抽取日期“值传递进来,所以这里的参数值可以随便写一个。
3.2 在输入节点上配置过滤条件
- 点击工具栏上“添加节点”按钮,从添加节点面板上拖入“关系数据源节点”。
- 进行“关系数据源”节点配置。
- 选择要抽取的“关系数据源表”、“输出字段”。
- 然后配置“过滤条件”。比如将过滤条件写为:销售日期 = ${抽取日期} ,这里“ 销售日期 ”是表中的字段名称,而“ ${抽取日期} “ 则是前面在”参数管理“对话框上定义的参数。
- 配置后点击”运行当前节点“,可以看到自助ETL按照我们配置的参数值,只抽取了对应抽取日期的数据。
3.3 正常配置其他转换节点
- 可以使用自助ETL 中的所有”转换“节点,进行正常的数据加工处理。
3.4 数据输出节点配置
- 选择一个合适的”输出“节点。比如我们通常使用”追加到关系表“,把新增数据追加到表中。
- 正常配置该输出节点。
- 设置”数据源、SCHEMA、表“,进行输出字段绑定。
- 注意,这里通常必须配置”回退SQL语句“,原因下面详述。比如将回退SQL语句写为:销售日期 = ${抽取日期} ,这里“ 销售日期 ”是目标表中的字段名称,而“ ${抽取日期} “ 则是前面在”参数管理“对话框上定义的参数。
1. 概述
1. 概述
1. 概述
1. 概述
1. 概述
详情请参考:数据挖掘-参数设置