页面树结构
转至元数据结尾
转至元数据起始

正在查看旧版本。 查看 当前版本.

与当前比较 查看页面历史

« 前一个 版本 9 下一个 »

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语句写为:销售日期 = ${抽取日期}   ,这里“ 销售日期 ”是目标表中的字段名称,而“ ${抽取日期} “ 则是前面在”参数管理“对话框上定义的参数。

注意

这里必须配置”回退SQL语句“的原因:

  • 我们的ETL很多时候通常会重复执行。比如执行过程中报错,我们修复错误后,需要重新执行。或者发现很早以前某天的历史数据错误,需要单独重跑这天的数据。
  • 因为我们选择的是”追加到关系表“节点,从前面节点来的数据都会追加到目标表中,如果某天数据抽取了两次,就会让目标表中数据重复、增多了。因此我们通过”回退SQL语句“,先把当前正抽取的这天的数据删除,然后再插入,就避免数据重复的可能性了。
  • 背后的执行过程是:先在目标表上执行 DELETE FROM `table_name` WHERE `销售日期` = ${抽取日期}  语句,然后再执行数据插入操作。 

4. 作业流中配置增量抽取

啊啊啊



1. 概述

1. 概述

1. 概述

1. 概述




详情请参考:数据挖掘-参数设置






  • 无标签