add workflow 天润Smart-ccc工单数据,dev

This commit is contained in:
root 2025-02-06 18:19:24 +08:00
parent f5720648c2
commit 0a2c7254fa
2 changed files with 300 additions and 0 deletions

View File

@ -0,0 +1,40 @@
DROP TABLE IF EXISTS p20_pdm.t00_china_city_pnum_his;
CREATE TABLE IF NOT EXISTS p20_pdm.t00_china_city_pnum_his (
country VARCHAR(255)
, postnumber VARCHAR(255)
, full_name VARCHAR(255)
, city_name VARCHAR(255)
, district VARCHAR(255)
, prov_name VARCHAR(255)
, area VARCHAR(255)
, Scd_Start_Dt date
, Scd_End_Dt date
, Etl_Batch_No varchar(50)
, Etl_First_Dt timestamp(0)
, Etl_Job varchar(200)
, Etl_Proc_Dt timestamp(0)
, Etl_Tx_Dt timestamp(0)
, Src_Sysname varchar(50)
, Src_Table varchar(50)
,primary key( postnumber,full_name,Scd_Start_Dt )
);
COMMENT ON COLUMN p20_pdm.t00_china_city_pnum_his.country IS '';
COMMENT ON COLUMN p20_pdm.t00_china_city_pnum_his.postnumber IS '';
COMMENT ON COLUMN p20_pdm.t00_china_city_pnum_his.full_name IS '';
COMMENT ON COLUMN p20_pdm.t00_china_city_pnum_his.city_name IS '';
COMMENT ON COLUMN p20_pdm.t00_china_city_pnum_his.district IS '';
COMMENT ON COLUMN p20_pdm.t00_china_city_pnum_his.prov_name IS '';
COMMENT ON COLUMN p20_pdm.t00_china_city_pnum_his.area IS '';
COMMENT ON COLUMN p20_pdm.t00_china_city_pnum_his.Scd_Start_Dt IS '开始时间';
COMMENT ON COLUMN p20_pdm.t00_china_city_pnum_his.Scd_End_Dt IS '结束时间';
COMMENT ON COLUMN p20_pdm.t00_china_city_pnum_his.Etl_Batch_No IS '作业批次号';
COMMENT ON COLUMN p20_pdm.t00_china_city_pnum_his.Etl_First_Dt IS '最初入库时间';
COMMENT ON COLUMN p20_pdm.t00_china_city_pnum_his.Etl_Job IS '作业名称';
COMMENT ON COLUMN p20_pdm.t00_china_city_pnum_his.Etl_Proc_Dt IS '本次入库时间';
COMMENT ON COLUMN p20_pdm.t00_china_city_pnum_his.Etl_Tx_Dt IS '作业运行时间';
COMMENT ON COLUMN p20_pdm.t00_china_city_pnum_his.Src_Sysname IS '来源系统';
COMMENT ON COLUMN p20_pdm.t00_china_city_pnum_his.Src_Table IS '来源表';
COMMENT ON TABLE p20_pdm.t00_china_city_pnum_his IS '城市邮编历史变更表';

View File

@ -0,0 +1,260 @@
/***************************************************************************************************/
/*script in Sql, generate by SdmCreateScript 2024(by IdgValue, qihang.feng@idgvalue.COM) */
/*VERSION 01.10 revised on 2020-08-25 */
/*Brilliance stems from wisdoms. */
/*************Head Section**************************************************************************/
/*Script Use: Periodically load data to :t00_china_city_pnum_his(城市邮编历史变更表) */
/*Create Date:2025-02-06 10:24:49 */
/*SDM Developed By: dev */
/*SDM Developed Date: 2025-02-06 */
/*SDM Checked By: dev */
/*SDM Checked Date: 2025-02-06 */
/*Script Developed By: dev */
/*Script Checked By: dev */
/*Source table 1: :PDMDB.t00_china_city_pnum */
/*Job Type: Inbound transform (Tier 1 to Tier 2) */
/*Target Table:t00_china_city_pnum_his */
/*ETL Job Name:t00_china_city_pnum_his */
/*ETL Frequency:None */
/*ETL Policy:F3 */
/********************************************************************************************/
/*******Main Section**************************************************************************/
\set ON_ERROR_STOP on
\set AUTOCOMMIT on
\timing on
/*创建临时表加载当前数据 */
CREATE TEMPORARY TABLE t00_china_city_pnum_his_agi_CUR_I
( LIKE :PDMDB.t00_china_city_pnum_his)
ON COMMIT PRESERVE ROWS;
/*创建临时表加载不同数据 */
CREATE TEMPORARY TABLE t00_china_city_pnum_his_agi_INS
( LIKE :PDMDB.t00_china_city_pnum_his)
ON COMMIT PRESERVE ROWS;
/*创建临时表加载当前有效数据 */
CREATE TEMPORARY TABLE t00_china_city_pnum_his_agi_CUR
( LIKE :PDMDB.t00_china_city_pnum_his)
ON COMMIT PRESERVE ROWS;
/*****************************************************************************************************/
/* GROUP 1:Source Table:t00_china_city_pnum***********************************************************/
/*****************************************************************************************************/
INSERT INTO t00_china_city_pnum_his_agi_CUR_I (
country /**/
,postnumber /**/
,full_name /**/
,city_name /**/
,district /**/
,prov_name /**/
,area /**/
,Scd_Start_Dt /*开始时间*/
,Scd_End_Dt /*结束时间*/
,Etl_Batch_No /*作业批次号*/
,Etl_First_Dt /*最初入库时间*/
,Etl_Job /*作业名称*/
,Etl_Proc_Dt /*本次入库时间*/
,Etl_Tx_Dt /*作业运行时间*/
,Src_Sysname /*来源系统*/
,Src_Table /*来源表*/
)
SELECT
COALESCE(TRIM(p0.country),'') /*country*/
,COALESCE(TRIM(p0.postnumber),'') /*postnumber*/
,COALESCE(TRIM(p0.full_name),'') /*full_name*/
,COALESCE(TRIM(p0.city_name),'') /*city_name*/
,COALESCE(TRIM(p0.district),'') /*district*/
,COALESCE(TRIM(p0.prov_name),'') /*prov_name*/
,COALESCE(TRIM(p0.area),'') /*area*/
,TO_DATE(:TXDATE, 'YYYYMMDD') /*Scd_Start_Dt*/
,TO_DATE(:MAXDATE,'YYYYMMDD') /*Scd_End_Dt*/
,0 /*Etl_Batch_No*/
,TO_DATE(:TXDATE,'YYYYMMDD') /*Etl_First_Dt*/
,:ETLJOB /*Etl_Job*/
,current_timestamp(0) /*Etl_Proc_Dt*/
,TO_DATE(:TXDATE,'YYYYMMDD') /*Etl_Tx_Dt*/
,Substr('t00_china_city_pnum',1,3) /*Src_Sysname*/
,'t00_china_city_pnum' /*Src_Table*/
FROM :PDMDB.t00_china_city_pnum p0
;
/*避免同一天多次运行造成数据重复 */
DELETE FROM :PDMDB.t00_china_city_pnum_his
WHERE ETL_JOB=:ETLJOB
AND scd_End_Dt=TO_DATE(:MAXDATE,'YYYYMMDD')
AND scd_Start_Dt=TO_DATE(:TXDATE,'YYYYMMDD');
UPDATE :PDMDB.t00_china_city_pnum_his
SET scd_End_Dt=TO_DATE(:MAXDATE,'YYYYMMDD')
WHERE ETL_JOB=:ETLJOB
AND scd_End_Dt=TO_DATE(:TXDATE,'YYYYMMDD');
/*往临时表插入当前数据。 */
INSERT INTO t00_china_city_pnum_his_agi_CUR(
country /**/
,Etl_Batch_No /*作业批次号*/
,Etl_First_Dt /*最初入库时间*/
,Etl_Job /*作业名称*/
,Etl_Proc_Dt /*本次入库时间*/
,Etl_Tx_Dt /*作业运行时间*/
,Src_Sysname /*来源系统*/
,Src_Table /*来源表*/
,postnumber /**/
,full_name /**/
,city_name /**/
,district /**/
,prov_name /**/
,area /**/
,Scd_Start_Dt /*开始时间*/
,Scd_End_Dt /*结束时间*/
)
SELECT
P1.country /**/
,P1.Etl_Batch_No /*作业批次号*/
,P1.Etl_First_Dt /*最初入库时间*/
,P1.Etl_Job /*作业名称*/
,P1.Etl_Proc_Dt /*本次入库时间*/
,P1.Etl_Tx_Dt /*作业运行时间*/
,P1.Src_Sysname /*来源系统*/
,P1.Src_Table /*来源表*/
,P1.postnumber /**/
,P1.full_name /**/
,P1.city_name /**/
,P1.district /**/
,P1.prov_name /**/
,P1.area /**/
,P1.Scd_Start_Dt /*开始时间*/
,P1.Scd_End_Dt /*结束时间*/
FROM :PDMDB.t00_china_city_pnum_his P1
WHERE P1.Scd_End_Dt = TO_DATE(:MAXDATE,'YYYYMMDD')
AND P1.ETL_Job = :ETLJOB
;
/*"今日数据"与"当前有效数据"进行比较找出新增及更新的数据,比对条件是:除去开始日期和结束日期的所有 */
/*字段。 */
INSERT INTO t00_china_city_pnum_his_agi_INS(
country /**/
, Etl_Batch_No /*作业批次号*/
, Etl_First_Dt /*最初入库时间*/
, Etl_Job /*作业名称*/
, Etl_Proc_Dt /*本次入库时间*/
, Etl_Tx_Dt /*作业运行时间*/
, Src_Sysname /*来源系统*/
, Src_Table /*来源表*/
, postnumber /**/
, full_name /**/
, city_name /**/
, district /**/
, prov_name /**/
, area /**/
, Scd_Start_Dt /*开始时间*/
, Scd_End_Dt /*结束时间*/
)
SELECT
P1.country /**/
, P1.Etl_Batch_No /*作业批次号*/
, P1.Etl_First_Dt /*最初入库时间*/
, P1.Etl_Job /*作业名称*/
, P1.Etl_Proc_Dt /*本次入库时间*/
, P1.Etl_Tx_Dt /*作业运行时间*/
, P1.Src_Sysname /*来源系统*/
, P1.Src_Table /*来源表*/
, P1.postnumber /**/
, P1.full_name /**/
, P1.city_name /**/
, P1.district /**/
, P1.prov_name /**/
, P1.area /**/
, P1.Scd_Start_Dt /*开始时间*/
, P1.Scd_End_Dt /*结束时间*/
FROM t00_china_city_pnum_his_agi_CUR_I P1
LEFT JOIN t00_china_city_pnum_his_agi_CUR P2
ON P1.postnumber = P2.postnumber
AND P1.full_name = P2.full_name
AND P1.country = P2.country
AND P1.city_name = P2.city_name
AND P1.district = P2.district
AND P1.prov_name = P2.prov_name
AND P1.area = P2.area
AND P2.ETL_Job =:ETLJOB
WHERE
P2.postnumber IS NULL
AND P2.full_name IS NULL
AND P2.Scd_Start_Dt IS NULL
AND P2.country IS NULL
AND P2.city_name IS NULL
AND P2.district IS NULL
AND P2.prov_name IS NULL
AND P2.area IS NULL
;
/*更新目标表中数据,对更新的数据进行封口,即置结束日期为TX_DATE */
UPDATE :PDMDB.t00_china_city_pnum_his
SET Scd_End_Dt = TO_DATE(:TXDATE,'YYYYMMDD')
,Etl_Tx_Dt=:TXDATE
,Etl_Proc_Dt=CURRENT_TIMESTAMP(0)
WHERE Scd_End_Dt = TO_DATE(:MAXDATE, 'YYYYMMDD')
AND (:PDMDB.t00_china_city_pnum_his.ETL_Job = :ETLJOB)
AND ( postnumber , full_name)
IN (SELECT postnumber , full_name
FROM t00_china_city_pnum_his_agi_INS)
/*然后将新增的数据插入到目标表中置开始日期为TX_DATE结束日期置为MAXDATE */
;INSERT INTO :PDMDB.t00_china_city_pnum_his (
country /**/
,Etl_Batch_No /*作业批次号*/
,Etl_First_Dt /*最初入库时间*/
,Etl_Job /*作业名称*/
,Etl_Proc_Dt /*本次入库时间*/
,Etl_Tx_Dt /*作业运行时间*/
,Src_Sysname /*来源系统*/
,Src_Table /*来源表*/
,postnumber /**/
,full_name /**/
,city_name /**/
,district /**/
,prov_name /**/
,area /**/
,Scd_Start_Dt /*开始时间*/
,Scd_End_Dt /*结束时间*/
)
SELECT
P1.country /**/
,P1.Etl_Batch_No /*作业批次号*/
,P1.Etl_First_Dt /*最初入库时间*/
,P1.Etl_Job /*作业名称*/
,P1.Etl_Proc_Dt /*本次入库时间*/
,P1.Etl_Tx_Dt /*作业运行时间*/
,P1.Src_Sysname /*来源系统*/
,P1.Src_Table /*来源表*/
,P1.postnumber /**/
,P1.full_name /**/
,P1.city_name /**/
,P1.district /**/
,P1.prov_name /**/
,P1.area /**/
,P1.Scd_Start_Dt /*开始时间*/
,P1.Scd_End_Dt /*结束时间*/
FROM t00_china_city_pnum_his_agi_INS P1
;
;
;
/*****程序结束退出 */
\q