SYN同步作业配置流程:(以TB_MID_BLL_GG_USER_DAY为例)
特别声明:现在的配置都是 测试的配置,完全为测试服务,只有上线时候才会配置完全正式版本,修改起来非常简单,文档中都已经说明,请大家熟知!
首先新建作业,作业名字为SYN_MID_BLL_GG_USER_DAY,所有同步作业都以SYN打头
目录配置为自己需要开发目标,POC为TD开发的目录
然后作业配置
作业配置分为4个步骤
1. TD端清空临时表和错误表,配置登陆信息为TDdtetl,而且建表一定要建立成NO PRIMARY
INDEX 的表,预防重复数据的剔除,不带分区!同步库为PTEMP3,同步只能是空表 例子:CREATE TABLE ${TEMPDB}.SYN_MID_BLL_GG_USER_DAY
AS (SELECT * FROM ${MIDDB}.TB_MID_BLL_GG_USER_DAY ) WITH NO DATA NO PRIMARY INDEX;
配置信息完成记得一定要点击保存,才会生效
2.数据同步,登陆信息无需配置,注意,GG表示没有中文字段的,有中文字段的需要加参数 --无中文字段举例
INSERT INTO PLOG.SYN_DATA_TERADATA_LOG (
DATABASENAME ,TABLENAME ,TX_DATE ,LOAD_TIME
,LOADED_ROW_COUNT ,ERROR_ROW_COUNT )
SELECT 'PTEMP3'
,'SYN_MID_BLL_GG_USER_DAY' ,'$TxDate'
,CURRENT_TIMESTAMP(0) ,SUM(LOADED_ROW_COUNT) ,SUM(ERROR_ROW_COUNT) FROM LOAD_TO_TERADATA(
ON ( SELECT * from PMID3.TB_MID_BLL_GG_USER_DAY WHERE DEAL_DATE='$TxDate'::DATE ) TDPID('sxdw')
USERNAME('dtetl') PASSWORD('dtetl2013')
TARGET_TABLE('PTEMP3.SYN_MID_BLL_GG_USER_DAY')
ERROR_TABLES('PTEMP3.SYN_MID_BLL_GG_USER_DAY_E1','PTEMP3.SYN_MID_BLL_GG_USER_DAY_E2') );
--有中文字段举例
INSERT INTO PLOG.SYN_DATA_TERADATA_LOG (
DATABASENAME ,TABLENAME ,TX_DATE ,LOAD_TIME
,LOADED_ROW_COUNT ,ERROR_ROW_COUNT )
SELECT 'PMID4'
,'TB_MID_PAR_USER_DAY' ,'20140120'
,CURRENT_TIMESTAMP(0) ,SUM(LOADED_ROW_COUNT) ,SUM(ERROR_ROW_COUNT) FROM LOAD_TO_TERADATA( ON ( SELECT * FROM ICONV (ON (SELECT * from PMID3.TB_MID_PAR_USER_DAY)CONV_FORMAT('TD'))) TDPID('sxdw')
USERNAME('dtetl') PASSWORD('dtetl2013')
TARGET_TABLE('PMID4.TB_MID_PAR_USER_DAY')
ERROR_TABLES('PMID4.TB_MID_PAR_USER_DAY_E1','PMID4.TB_MID_PAR_USER_DAY_E2') );
3.TD端作业清洗,配置登陆信息为TDdtetl
特别注意:作业测试的时候目标表为PMID4,作业正式上线时候请改成PMID3参数配置 4.TD作业状态修改,地市库作业插入,下游触发作业插入,配置登陆信息为TDdwetl 涉及表,测试时候一定不要对正式表操作,以免照成严重的后果 DWETL.ETL_JOB(作业表)
DWETL.ETL_JOB_STATUS(同步地市和前端,只有同步地市和同步前端的作业才用) DWETL.ETL_JOB_RECEIVE(触发下游)
特别注意:由于测试原因,暂时把配置登陆信息为TDdtetl,因为他有权限,实际登陆信息为TDdwetl!而参数${ELTDB}对应的是TD端PTEMP3库,作业正式上线会改成DWETL
4个步骤整体配置完成一定要记得保存
具体参考SYN_MID_BLL_GG_USER_DAY,这个作业是按测试流程配置的!上线后会改成正式流程,请大家一定要注意!
第二步的 ASTER同步表只是开发了PTEMP3.TB_MID_BLL_GG_USER_DAY临时同步表 ,数据100条,实际上同步表PMID3.TB_MID_BLL_GG_USER_DAY,正式上线会改正; 详细说明:
INSERT INTO PLOG.SYN_DATA_TERADATA_LOG (
DATABASENAME ,TABLENAME ,TX_DATE ,LOAD_TIME
,LOADED_ROW_COUNT ,ERROR_ROW_COUNT )
SELECT 'PTEMP3'
,'SYN_MID_BLL_GG_USER_DAY' ,'$TxDate'
,CURRENT_TIMESTAMP(0) ,SUM(LOADED_ROW_COUNT) ,SUM(ERROR_ROW_COUNT) FROM LOAD_TO_TERADATA(
ON ( SELECT * from PTEMP3.TB_MID_BLL_GG_USER_DAY WHERE DEAL_DATE='$TxDate'::DATE ) TDPID('sxdw')
USERNAME('dtetl') PASSWORD('dtetl2013')
TARGET_TABLE('PTEMP3.SYN_MID_BLL_GG_USER_DAY')
ERROR_TABLES('PTEMP3.SYN_MID_BLL_GG_USER_DAY_E1','PTEMP3.SYN_MID_BLL_GG_USER_DAY_E2') );
标蓝的部分会改成PMID3.TB_MID_BLL_GG_USER_DAY
第三步的 插入目标表为 测试PMID4,实际为PMID3.正式上线会改正 --删除历史数据
DELETE FROM PMID4.TB_MID_BLL_GG_USER_DAY WHERE DEAL_DATE--删除当前数据DELETE FROM PMID4.TB_MID_BLL_GG_USER_DAY WHERE DEAL_DATE=CAST('$TxDate' AS DATE FORMAT 'YYYYMMDD');
--数据插入
INSERT INTO PMID4.TB_MID_BLL_GG_USER_DAY
SELECT * FROM ${TEMPDB}.SYN_MID_BLL_GG_USER_DAY;
--删除临时表
DROP TABLE ${TEMPDB}.SYN_MID_BLL_GG_USER_DAY; 标蓝的部分会改成PMID3
第四步的 测试配置登陆信息为TDdtetl,实际为TDdwetl,正式上线会改正
作业触发设置
在aster端,实际作业跑完就会触发同步作业,现在先配置好就可以,触发开关已经关闭
作业上线
前3步作业配置完成,就可以上线作业了。但是,现在的统一是先不上线,先在作业维护中测试通过,然后在上线前把参数配置都改成正式上线的配置,最后上线。(上线一但完成,将会自动同步!)
备注:
一共开发了3个作业,在测试配置下都跑的成功,达到预期效果
测试每个作业前一定要删除PTEMP3.ETL_JOB_RECEIVE 这个表,否则有可能报错,因为去ID的MAX的值会加1 正式上线需要做:
SYN_MID_BLL_GG_USER_DAY 需要修改配置信息和参数配置以及同步表
SYN_MID_BLL_GG_USER_MON 需要修改配置信息和参数配置以及同步表,还要配置触发,但考虑到数据量很大,有可能要分作业!
SYN_MID_BLL_GG_USER_MON 需要修改配置信息和参数配置以及同步表,还要配置触发 风险:
触发作业的插入是同一时刻,是否都能触发,需要割接时候在正式库测试一次!