“动态增量”是“增量导入数据”在9.1版本中新增的入集市的方式。
随着数据量的增大,咱们入集市的方式渐渐的从“同步数据”变成“增量导入数据”,“增量导入数据”的优点大致有两点:
1. 入集市的时候可以打上meta,查询的时候按照meta进行查询,加快查询速度;
2. 采取每次追加部分数据的方式,跟“同步数据”每次全量数据入集市的方式相比,每天入集市任务的时间更短;数据库处理的数据量更小,减少数据库压力。
同时,“增量导入数据”也并不能完全满足咱们数据更新的需求。
一. 为什么要用“动态增量”? 举个例子,某部门分析的是订单数据,有历史5年的订单数据(2016年1月到2021年3月),历史数据不会变化,只有最近3个月的数据会发生变化,每天想要查询的历史所有订单数据(2016年1月到昨天的数据都可能会查询)。
如果使用“增量导入数据”的“普通增量”,每天追加前一天的数据到集市中没有问题,但是无法满足“最近3个月的数据会变化”的场景,比如:咱们在2021年3月10号,将2021年3月9号的数据追加到集市中,但是到了11号的时候,9号的数据发生了变化。”普通增量”是没有办法对集市中已经变化的9号的数据进行update,或者说删除9号的数据,重新导入。
这种时候“动态增量”就派上用场啦!
二. “动态增量”如何上市? A. 历史数据按月全量入(2021-03-01日进行)
(1) 需要一个sql数据集,查询 表“某部门订单数据”的全部数据,且需要有日期字段。sql语句中不用加其他where条件用于限制取哪段时间的数据。
(2)新建一个“动态增量”任务
文件夹:设置集市文件夹的名称,需要有意义
更新依据列:需要是日期类型,如果不是日期类型,选择旁边的新建计算列,通过表达式的方式将非日期类型的日期列,转换为日期类型。
咱们这里选择“按时间范围更新”,将历史数据全部包含(比如咱们这里,在2021年3月1号的时候,历史数据范围是2020-01-01到2021-02-28),范围选择完成也可以看下面的提示更新范围,更好理解,范围是包含开始时间,但不包含结束时间。
实现的效果是历史数据按月分割,不同月份的数据存储在不同的集市文件中,并自动给集市数据加上meta,meta名为:_Date_Range_,meta值:数据对应的月份。
具体逻辑:一个任务,按照时间范围(2020-01-01到本月(2021-03月)),按月进行分割,任务实际执行的时候,是按月入集市的,数据库执行的sql,不是一条(select * from 某部门订单数据),而是每个月一条。
B. 每天更新最近3个月数据
(1) 2021-03-02号以及之后每天更新最近3个月数据
文件夹:还是跟之前保持一致
按周期进行更新,更新范围:近2月到今天,也就是2021-01-01开始到今天
更新的效果是按月进行分割,删除2021-01月到2021-02月的数据,追加生成2021-01月到2021-03月的数据。
一个完整的动态增量的实例就讲完了,实际使用中咱们可以根据情况进行调整,总的来说动态增量可以实现某段时间的数据按月(按年或按日)进行分割入集市,并打上meta,同时,可以实现对已经入集市的数据进行按月(按年或按日)更新,更新最近一段时间,或者某段固定的时间范围,更新的逻辑是删除对应时间段的集市文件,然后生成新的。
最后咱们不得不提的是meta的使用,前面“动态增量”已经实现了分割入集市,并打上meta,咱们的目标实现了一半(减少入集市的时间);还有另外一半(加快集市查询),需要通过meta的使用,也就是文件过滤来实现。
|