diff --git a/TK_Cust/dev/tk_crm/CRM_CCP分类/T01_CRM_CCP_TYPE.sql b/TK_Cust/dev/tk_crm/CRM_CCP分类/T01_CRM_CCP_TYPE.sql new file mode 100644 index 0000000..656f20a --- /dev/null +++ b/TK_Cust/dev/tk_crm/CRM_CCP分类/T01_CRM_CCP_TYPE.sql @@ -0,0 +1,28 @@ + +DROP TABLE IF EXISTS p20_pdm.T01_CRM_CCP_TYPE; +CREATE TABLE IF NOT EXISTS p20_pdm.T01_CRM_CCP_TYPE ( + ccp_id varchar(50) + , ccp_value varchar(100) + , ccp_type varchar(30) + , Etl_Batch_No varchar(50) + , Etl_First_Dt timestamp(0) + , Etl_Job varchar(50) + , Etl_Proc_Dt timestamp(0) + , Etl_Tx_Dt timestamp(0) + , Src_Sysname varchar(50) + , Src_Table varchar(50) + ,primary key( ccp_id ) +); + + COMMENT ON COLUMN p20_pdm.T01_CRM_CCP_TYPE.ccp_id IS 'CCP编号'; + COMMENT ON COLUMN p20_pdm.T01_CRM_CCP_TYPE.ccp_value IS 'CCP值'; + COMMENT ON COLUMN p20_pdm.T01_CRM_CCP_TYPE.ccp_type IS 'CCP类型'; + COMMENT ON COLUMN p20_pdm.T01_CRM_CCP_TYPE.Etl_Batch_No IS '作业批次号'; + COMMENT ON COLUMN p20_pdm.T01_CRM_CCP_TYPE.Etl_First_Dt IS '最初入库时间'; + COMMENT ON COLUMN p20_pdm.T01_CRM_CCP_TYPE.Etl_Job IS '作业名称'; + COMMENT ON COLUMN p20_pdm.T01_CRM_CCP_TYPE.Etl_Proc_Dt IS '本次入库时间'; + COMMENT ON COLUMN p20_pdm.T01_CRM_CCP_TYPE.Etl_Tx_Dt IS '作业运行时间'; + COMMENT ON COLUMN p20_pdm.T01_CRM_CCP_TYPE.Src_Sysname IS '来源系统'; + COMMENT ON COLUMN p20_pdm.T01_CRM_CCP_TYPE.Src_Table IS '来源表'; + +COMMENT ON TABLE p20_pdm.T01_CRM_CCP_TYPE IS 'CRM_CCP分类'; \ No newline at end of file diff --git a/TK_Cust/dev/tk_crm/CRM_CCP分类/T01_CRM_CCP_TYPE_agi.sql b/TK_Cust/dev/tk_crm/CRM_CCP分类/T01_CRM_CCP_TYPE_agi.sql new file mode 100644 index 0000000..7d47103 --- /dev/null +++ b/TK_Cust/dev/tk_crm/CRM_CCP分类/T01_CRM_CCP_TYPE_agi.sql @@ -0,0 +1,154 @@ +/***************************************************************************************************/ +/*script in Sql, generate by SdmCreateScript 2020(by Qihang Feng, QF255001@TERADATA.COM) */ +/*VERSION 01.10 revised on 2020-08-25 */ +/*Brilliance stems from wisdoms. */ +/*************Head Section**************************************************************************/ +/*Script Use: Periodically load data to :T01_CRM_CCP_TYPE(CRM_CCP分类) */ +/*Create Date:2024-01-15 20:10:56 */ +/*SDM Developed By: dev */ +/*SDM Developed Date: 2024-01-11 */ +/*SDM Checked By: dev */ +/*SDM Checked Date: 2024-01-15 */ +/*Script Developed By: dev */ +/*Script Checked By: dev */ +/*Source table 1: p10_sa.s98_s_ccp_mapping_table */ +/*Job Type: Inbound transform (Tier 1 to Tier 2) */ +/*Target Table:T01_CRM_CCP_TYPE */ +/*ETL Job Name:T01_CRM_CCP_TYPE */ +/*ETL Frequency:Daily */ +/*ETL Policy:F2 */ +/********************************************************************************************/ +/*******Main Section**************************************************************************/ +\set ON_ERROR_STOP on +\set AUTOCOMMIT on +\timing on + + + +/*创建临时表加载当前数据 */ +CREATE TEMPORARY TABLE T01_CRM_CCP_TYPE_agi_CUR_I + ( LIKE :PDMDB.T01_CRM_CCP_TYPE) +ON COMMIT PRESERVE ROWS; + + + +/*创建临时表加载不同数据 */ +CREATE TEMPORARY TABLE T01_CRM_CCP_TYPE_agi_INS +( LIKE :PDMDB.T01_CRM_CCP_TYPE) +ON COMMIT PRESERVE ROWS; + + +/*****************************************************************************************************/ +/* GROUP 1:Source Table:s98_s_ccp_mapping_table*******************************************************/ +/*****************************************************************************************************/ +INSERT INTO T01_CRM_CCP_TYPE_agi_CUR_I ( + ccp_id /*CCP编号*/ + ,ccp_value /*CCP值*/ + ,ccp_type /*CCP类型*/ + ,Etl_Batch_No /*作业批次号*/ + ,Etl_First_Dt /*最初入库时间*/ + ,Etl_Job /*作业名称*/ + ,Etl_Proc_Dt /*本次入库时间*/ + ,Etl_Tx_Dt /*作业运行时间*/ + ,Src_Sysname /*来源系统*/ + ,Src_Table /*来源表*/ + ) +SELECT + COALESCE(TRIM(CAST(p0.ccp_id AS varchar(50))),'') /*ccp_id*/ + ,COALESCE(TRIM(CAST(p0.ccp_value AS varchar(100))),'') /*ccp_value*/ + ,COALESCE(TRIM(CAST(p0.ccp_type AS varchar(30))),'') /*ccp_type*/ + ,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('s98_s_ccp_mapping_table',1,3) /*Src_Sysname*/ + ,'s98_s_ccp_mapping_table' /*Src_Table*/ + +FROM p10_sa.s98_s_ccp_mapping_table p0 +; + + + +/*将不同数据插入到临时表 */ +;INSERT INTO T01_CRM_CCP_TYPE_agi_INS ( + ccp_value /*CCP值*/ + ,ccp_type /*CCP类型*/ + ,ccp_id /*CCP编号*/ + ,Etl_Batch_No /*作业批次号*/ + ,Etl_First_Dt /*最初入库时间*/ + ,Etl_Job /*作业名称*/ + ,Etl_Proc_Dt /*本次入库时间*/ + ,Etl_Tx_Dt /*作业运行时间*/ + ,Src_Sysname /*来源系统*/ + ,Src_Table /*来源表*/ + +) + SELECT + P1.ccp_value /*CCP值*/ + ,P1.ccp_type /*CCP类型*/ + ,P1.ccp_id /*CCP编号*/ + ,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 /*来源表*/ + +FROM T01_CRM_CCP_TYPE_agi_CUR_I P1 +LEFT JOIN :PDMDB.T01_CRM_CCP_TYPE P2 +ON P1.ccp_value = P2.ccp_value + AND P1.ccp_type = P2.ccp_type + AND P1.ccp_id = P2.ccp_id + +WHERE P2.ccp_value IS NULL + OR P2.ccp_type IS NULL + OR P2.ccp_id IS NULL + +; +/*将新增数据插入到目标表 */ +;INSERT INTO :PDMDB.T01_CRM_CCP_TYPE ( + ccp_value /*CCP值*/ + ,ccp_type /*CCP类型*/ + ,ccp_id /*CCP编号*/ + ,Etl_Batch_No /*作业批次号*/ + ,Etl_First_Dt /*最初入库时间*/ + ,Etl_Job /*作业名称*/ + ,Etl_Proc_Dt /*本次入库时间*/ + ,Etl_Tx_Dt /*作业运行时间*/ + ,Src_Sysname /*来源系统*/ + ,Src_Table /*来源表*/ + +) +SELECT + P1.ccp_value /*CCP值*/ + ,P1.ccp_type /*CCP类型*/ + ,P1.ccp_id /*CCP编号*/ + ,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 /*来源表*/ + +FROM T01_CRM_CCP_TYPE_agi_INS P1 +ON CONFLICT ( ccp_id) +DO UPDATE SET + ccp_id=excluded.ccp_id + ,ccp_value=excluded.ccp_value + ,ccp_type=excluded.ccp_type + ,Etl_Batch_No=excluded.Etl_Batch_No + ,Etl_First_Dt=excluded.Etl_First_Dt + ,Etl_Job=excluded.Etl_Job + ,Etl_Proc_Dt=excluded.Etl_Proc_Dt + ,Etl_Tx_Dt=excluded.Etl_Tx_Dt + ,Src_Sysname=excluded.Src_Sysname + ,Src_Table=excluded.Src_Table + + +; +/*****程序结束退出 */ +\q + diff --git a/TK_Cust/dev/tk_crm/CRM客户CCP/t01_crm_cust_ccp.sql b/TK_Cust/dev/tk_crm/CRM客户CCP/t01_crm_cust_ccp.sql new file mode 100644 index 0000000..66f7531 --- /dev/null +++ b/TK_Cust/dev/tk_crm/CRM客户CCP/t01_crm_cust_ccp.sql @@ -0,0 +1,28 @@ + +DROP TABLE IF EXISTS p20_pdm.t01_crm_cust_ccp; +CREATE TABLE IF NOT EXISTS p20_pdm.t01_crm_cust_ccp ( + crm_contact_account varchar(20) + , create_time timestamp(0) + , ccp_value varchar(50) + , Etl_Batch_No varchar(50) + , Etl_First_Dt timestamp(0) + , Etl_Job varchar(50) + , Etl_Proc_Dt timestamp(0) + , Etl_Tx_Dt timestamp(0) + , Src_Sysname varchar(50) + , Src_Table varchar(50) + ,primary key( crm_contact_account ) +); + + COMMENT ON COLUMN p20_pdm.t01_crm_cust_ccp.crm_contact_account IS 'CRM_CONTACT账号'; + COMMENT ON COLUMN p20_pdm.t01_crm_cust_ccp.create_time IS '创建时间'; + COMMENT ON COLUMN p20_pdm.t01_crm_cust_ccp.ccp_value IS 'ccp值'; + COMMENT ON COLUMN p20_pdm.t01_crm_cust_ccp.Etl_Batch_No IS '作业批次号'; + COMMENT ON COLUMN p20_pdm.t01_crm_cust_ccp.Etl_First_Dt IS '最初入库时间'; + COMMENT ON COLUMN p20_pdm.t01_crm_cust_ccp.Etl_Job IS '作业名称'; + COMMENT ON COLUMN p20_pdm.t01_crm_cust_ccp.Etl_Proc_Dt IS '本次入库时间'; + COMMENT ON COLUMN p20_pdm.t01_crm_cust_ccp.Etl_Tx_Dt IS '作业运行时间'; + COMMENT ON COLUMN p20_pdm.t01_crm_cust_ccp.Src_Sysname IS '来源系统'; + COMMENT ON COLUMN p20_pdm.t01_crm_cust_ccp.Src_Table IS '来源表'; + +COMMENT ON TABLE p20_pdm.t01_crm_cust_ccp IS 'CRM客户CCP'; \ No newline at end of file diff --git a/TK_Cust/dev/tk_crm/CRM客户CCP/t01_crm_cust_ccp_agi.sql b/TK_Cust/dev/tk_crm/CRM客户CCP/t01_crm_cust_ccp_agi.sql new file mode 100644 index 0000000..3fba7b2 --- /dev/null +++ b/TK_Cust/dev/tk_crm/CRM客户CCP/t01_crm_cust_ccp_agi.sql @@ -0,0 +1,154 @@ +/***************************************************************************************************/ +/*script in Sql, generate by SdmCreateScript 2020(by Qihang Feng, QF255001@TERADATA.COM) */ +/*VERSION 01.10 revised on 2020-08-25 */ +/*Brilliance stems from wisdoms. */ +/*************Head Section**************************************************************************/ +/*Script Use: Periodically load data to :t01_crm_cust_ccp(CRM客户CCP) */ +/*Create Date:2024-01-15 20:11:32 */ +/*SDM Developed By: dev */ +/*SDM Developed Date: 2024-01-15 */ +/*SDM Checked By: dev */ +/*SDM Checked Date: 2024-01-15 */ +/*Script Developed By: dev */ +/*Script Checked By: dev */ +/*Source table 1: p10_sa.s98_s_crm_contact_ccp */ +/*Job Type: Inbound transform (Tier 1 to Tier 2) */ +/*Target Table:t01_crm_cust_ccp */ +/*ETL Job Name:t01_crm_cust_ccp */ +/*ETL Frequency:Daily */ +/*ETL Policy:F2 */ +/********************************************************************************************/ +/*******Main Section**************************************************************************/ +\set ON_ERROR_STOP on +\set AUTOCOMMIT on +\timing on + + + +/*创建临时表加载当前数据 */ +CREATE TEMPORARY TABLE t01_crm_cust_ccp_agi_CUR_I + ( LIKE :PDMDB.t01_crm_cust_ccp) +ON COMMIT PRESERVE ROWS; + + + +/*创建临时表加载不同数据 */ +CREATE TEMPORARY TABLE t01_crm_cust_ccp_agi_INS +( LIKE :PDMDB.t01_crm_cust_ccp) +ON COMMIT PRESERVE ROWS; + + +/*****************************************************************************************************/ +/* GROUP 1:Source Table:s98_s_crm_contact_ccp*********************************************************/ +/*****************************************************************************************************/ +INSERT INTO t01_crm_cust_ccp_agi_CUR_I ( + crm_contact_account /*CRM_CONTACT账号*/ + ,create_time /*创建时间*/ + ,ccp_value /*ccp值*/ + ,Etl_Batch_No /*作业批次号*/ + ,Etl_First_Dt /*最初入库时间*/ + ,Etl_Job /*作业名称*/ + ,Etl_Proc_Dt /*本次入库时间*/ + ,Etl_Tx_Dt /*作业运行时间*/ + ,Src_Sysname /*来源系统*/ + ,Src_Table /*来源表*/ + ) +SELECT + COALESCE(TRIM(CAST(p0.tek_contactnumber AS varchar(20))),'') /*crm_contact_account*/ + ,COALESCE(TO_TIMESTAMP(CAST(p0.newcreation AS VARCHAR(19)),'YYYY-MM-DD HH24:mi:ss'),TO_TIMESTAMP(:NULLDATE,'YYYYMMDD')) /*create_time*/ + ,COALESCE(TRIM(CAST(p0.tek_ccpchoiceidname AS varchar(50))),'') /*ccp_value*/ + ,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('s98_s_crm_contact_ccp',1,3) /*Src_Sysname*/ + ,'s98_s_crm_contact_ccp' /*Src_Table*/ + +FROM p10_sa.s98_s_crm_contact_ccp p0 +; + + + +/*将不同数据插入到临时表 */ +;INSERT INTO t01_crm_cust_ccp_agi_INS ( + create_time /*创建时间*/ + ,ccp_value /*ccp值*/ + ,crm_contact_account /*CRM_CONTACT账号*/ + ,Etl_Batch_No /*作业批次号*/ + ,Etl_First_Dt /*最初入库时间*/ + ,Etl_Job /*作业名称*/ + ,Etl_Proc_Dt /*本次入库时间*/ + ,Etl_Tx_Dt /*作业运行时间*/ + ,Src_Sysname /*来源系统*/ + ,Src_Table /*来源表*/ + +) + SELECT + P1.create_time /*创建时间*/ + ,P1.ccp_value /*ccp值*/ + ,P1.crm_contact_account /*CRM_CONTACT账号*/ + ,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 /*来源表*/ + +FROM t01_crm_cust_ccp_agi_CUR_I P1 +LEFT JOIN :PDMDB.t01_crm_cust_ccp P2 +ON P1.create_time = P2.create_time + AND P1.ccp_value = P2.ccp_value + AND P1.crm_contact_account = P2.crm_contact_account + +WHERE P2.create_time IS NULL + OR P2.ccp_value IS NULL + OR P2.crm_contact_account IS NULL + +; +/*将新增数据插入到目标表 */ +;INSERT INTO :PDMDB.t01_crm_cust_ccp ( + create_time /*创建时间*/ + ,ccp_value /*ccp值*/ + ,crm_contact_account /*CRM_CONTACT账号*/ + ,Etl_Batch_No /*作业批次号*/ + ,Etl_First_Dt /*最初入库时间*/ + ,Etl_Job /*作业名称*/ + ,Etl_Proc_Dt /*本次入库时间*/ + ,Etl_Tx_Dt /*作业运行时间*/ + ,Src_Sysname /*来源系统*/ + ,Src_Table /*来源表*/ + +) +SELECT + P1.create_time /*创建时间*/ + ,P1.ccp_value /*ccp值*/ + ,P1.crm_contact_account /*CRM_CONTACT账号*/ + ,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 /*来源表*/ + +FROM t01_crm_cust_ccp_agi_INS P1 +ON CONFLICT ( crm_contact_account) +DO UPDATE SET + crm_contact_account=excluded.crm_contact_account + ,create_time=excluded.create_time + ,ccp_value=excluded.ccp_value + ,Etl_Batch_No=excluded.Etl_Batch_No + ,Etl_First_Dt=excluded.Etl_First_Dt + ,Etl_Job=excluded.Etl_Job + ,Etl_Proc_Dt=excluded.Etl_Proc_Dt + ,Etl_Tx_Dt=excluded.Etl_Tx_Dt + ,Src_Sysname=excluded.Src_Sysname + ,Src_Table=excluded.Src_Table + + +; +/*****程序结束退出 */ +\q + diff --git a/TK_Cust/dev/tk_crm/泰克CRM/wf_dag_tk_crm.py b/TK_Cust/dev/tk_crm/泰克CRM/wf_dag_tk_crm.py new file mode 100644 index 0000000..644fd2f --- /dev/null +++ b/TK_Cust/dev/tk_crm/泰克CRM/wf_dag_tk_crm.py @@ -0,0 +1,178 @@ +#!/usr/bin/python +# -*- encoding=utf-8 -*- +from airflow import DAG +from datetime import datetime, timedelta +from airflow.contrib.hooks.ssh_hook import SSHHook +from airflow.contrib.operators.ssh_operator import SSHOperator +from airflow.sensors.external_task_sensor import ExternalTaskSensor +import json + +from airflow.operators.email_operator import EmailOperator +from airflow.utils.trigger_rule import TriggerRule + + +sshHook = SSHHook(ssh_conn_id ='ssh_air') +default_args = { +'owner': 'info@idgvalue.com', +'email': [''], +'email_on_failure': True, +'email_on_retry':True, +'start_date': datetime(2022, 9, 12), +'depends_on_past': False, +'retries': 6, +'retry_delay': timedelta(minutes=10), +} + +dag = DAG('wf_dag_tk_crm', default_args=default_args, +schedule_interval="0 0 * * *", +catchup=False, +dagrun_timeout=timedelta(minutes=160), +max_active_runs=3) + +task_failed = EmailOperator ( + dag=dag, + trigger_rule=TriggerRule.ONE_FAILED, + task_id="task_failed", + to=["info@idgvalue.com"], + cc=[""], + subject="tk_crm_failed", + html_content='