zcbus-7.8-14-20220813-beta.tar.gz版本支持。

说明

etl增加临时表模式,bus_client_main_control_properties的参数temp_table_mode设置为1时开启临时表的模式,需要先为bus_client_product_object的每一个对象创建一个临时表,消费出来的数据往临时表里进行装载,同时用etl的sql语句查询临时库生成新的数据发送到新的topic,临时表目前只支持mysql,临时表的表名设置到bus_client_product_object_properties的temp_table_schema和temp_table_name

配置

模板表添加参数

INSERT INTO `bus_parameter_module`( `module`, `moduletype`, `role`, `orderid`, `variable_name`, `display_name`, `value`, `ifcommon`, `input_type`, `hide`, `ifedit`, `ifciphertext`, `description`) VALUES ( 'bus_client_main_control_properties', 'COMMON', 0, 56, 'temp_table_mode', 'etl临时表模式', '0', 0, 0, 0, 1, 0, '设置为1时,etl开启临时表模式');

通道添加参数

INSERT INTO `bus_client_main_control_properties`( `customerid`, `ctlid`, `variable_name`, `value`, `hide`, `orderid`, `description`) VALUES ( 10086, 1896, 'temp_table_mode', '1', 0, 6, '设置为1时,etl开启临时表模式');

表属性添加临时表配置

a表:

INSERT INTO `databus_v4`.`bus_client_product_object_properties`(`customerid`, `objectid`, `variable_name`, `value`, `orderid`, `description`) VALUES (10086,1192581,'temp_table_schema', 'test', 1, 'etl临时表模式,临时表库名');
INSERT INTO `databus_v4`.`bus_client_product_object_properties`(`customerid`, `objectid`, `variable_name`, `value`, `orderid`, `description`) VALUES (10086,1192581,'temp_table_name', 'test_temp_a', 2, 'etl临时表模式,临时表表名');

b表:

INSERT INTO `databus_v4`.`bus_client_product_object_properties`(`customerid`, `objectid`, `variable_name`, `value`, `orderid`, `description`) VALUES (10086,1192582,'temp_table_schema', 'test', 1, 'etl临时表模式,临时表库名');
INSERT INTO `databus_v4`.`bus_client_product_object_properties`(`customerid`, `objectid`, `variable_name`, `value`, `orderid`, `description`) VALUES (10086,1192582,'temp_table_name', 'test_temp_b', 2, 'etl临时表模式,临时表表名');

注:每个关联表都需要配置临时表,每个临时表只记录对应表的数据

etl规则

a表规则:

NEWDATA(sqlfunction=(select a.key,a.order_num,a.create_time,b.url,b.update_time from databus_v4.account_menu a,databus_v4.account_rel_menu_api b where a.key=b.menu_key and a.key=#key#))

b表规则:

NEWDATA(sqlfunction=(select a.key,a.order_num,a.create_time,b.url,b.update_time from databus_v4.account_menu a,databus_v4.account_rel_menu_api b where a.key=b.menu_key and b.menu_key=#menu_key#))

临时表手动创建

a表:

create table test.test_temp_a (
`key` varchar(64) COLLATE utf8mb4_bin NOT NULL DEFAULT '' COMMENT '标识',
`order_num` int(11) NOT NULL DEFAULT '0' COMMENT '排序字段',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
);
alter table test.test_temp_a add primary key(`key`);

b表:

create table test.test_temp_b (
`menu_key` varchar(64) COLLATE utf8mb4_bin NOT NULL DEFAULT '' COMMENT '标识',
`url` varchar(128) COLLATE utf8mb4_bin NOT NULL DEFAULT '0' COMMENT 'role_id',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
);
alter table test.test_temp_b add primary key(`menu_key`);

注:
(1)临时表暂时需要手动创建
(2)临时表需要有主键,否则报错

测试记录

全量

a表全量topic部分信息:

b表全量topic部分信息:

a表临时表部分日志信息:

b表临时表部分日志信息:

增量

insert操作


a表增量insert操作topic部分信息:

b表增量insert操作topic部分信息:

临时表部分日志信息:

update操作


a表增量insert操作topic部分信息:

b表增量insert操作topic部分信息:

临时表部分日志信息:

delete操作


a表增量insert操作topic部分信息:

b表增量insert操作topic部分信息:

临时表部分日志信息:

文档更新时间: 2022-08-13 02:51   作者:周风磊