一、增量脚本思路
- 数据表中,必须有一个时间戳,或自增长主键
- 先创建一个全量抽取的 qvd
- 从 qvd 中获取最后插入的数据
- 将这个值转成变量
- 从数据库中抽取数据,做
where
条件,时间戳>变量
- 通过
Contencat
合并已经抽取好的 qvd数据
- 加载新数据集到 qvd;
- 在 qmc 中设置定时任务,形成定时增量抽取
二、脚本代码解析
1、全量抽取表数据,存为QVD
1 2 3 4 5 6 7 8 9 10 11 12
| data: LOAD City, "City Code", Region, Latitude, Longitude, "Desc" FROM [lib://data/test_table.xlsx] (ooxml, embedded labels, table is Cities);
store * from data into [lib:data/data.qvd](qvd);
SQL
|
2、从QVD加载数据
1 2 3 4 5 6 7 8 9
| oldTable: LOAD City, "City Code", Region, Latitude, Longitude, "Desc" FROM [lib://data/data.qvd](qvd);
SQL
|
3、找到最后插入数据的时间戳(我这里是自增长主键)
1 2 3 4
| max_Key: load Max("City Code") as MaxKey Resident oldTable; //resident从之前加载的数据表中加载数据
SQL
|
4、将时间戳(主键)转成变量
1
| Let max_Key = Peek('MaxKey',0,'max_Key');
SQL
|
5、从数据库中抽取更新数据
1 2 3 4 5
| newTable: Load * Form [lib://data/data.qvd](qvd) Where City Code > $(max_Key);
SQL
|
6、合并全量数据表
1 2 3 4
| Concatenate //合并数据 Load * From [lib://data/data.qvd](qvd);
SQL
|
7、将增量抽取的数据存成Qvd
1
| store newTable into [lib://data/data.qvd](qvd);
SQL
|
完整代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| //抽取QVD中的数据 oldTable: LOAD * FROM [lib://data/data.qvd] (qvd);
//找到最后插入数据的时间戳,或者自增主键 //Resident 从已加载的数据表中加载数据 max_Key: load Max(key) as MaxKey Resident data;
//将最后的时间戳,或者主键存成变量
Let max_Key = Peek('MaxKey',0,'max_Key');
Drop Table oldTable;
//利用where条件,筛选出新增加的数据集 newTable: LOAD * FROM [lib://data/data.xlsx] where key > $(max_Key); //拼接全量抽取的qvd Concatenate LOAD * FROM [lib://data/data.qvd] (qvd);
//将抽取好的增量数据存入QVD store NEWSENSORS into [lib://data/data.qvd](qvd);
Drop table newTable;
SQL
|
三、Qmc设置定时任务
1、打开 qmc,左侧栏找到 Tasks

2、进入Tasks,点击Create new

3、设置任务
- Step.1设置任务名称
- Step.2 选择执行任务的app
- Step.3勾选为启用任务
- Step.4任务会话超时,时长
- Step.5重试最大次数
- Step.6点击Actions

- 创建触发器

- 我们在这里创建一个每日触发器,双击进入编辑

我们在这里创建一个每日触发器,双击进入编辑
- Step.1设置触发器名称
- Step.2 勾选为启用任务
- Step.3 选择时区
注意: 这里不改你的触发器触发事件会晚8个小时

- Step.4选择触发器开始执行的时间
- Step.5 最后确认选择触发机制
- Step.6 选择每几天出发一次任务
- Step.7任务结束时间,可以默认,不用时手动关闭!
- 点击 Ok 完成触发器设置

- 在Eidt reload Tasks页面点击Apply应用
- 退回到Tasks页面 查看新增的任务

至此,定时增量抽数已经讲解完毕!