diff --git a/TK_Cust/dev/tk_cust/SCRM联系方式历史/t01_scrm_contact_his.sql b/TK_Cust/dev/tk_cust/SCRM联系方式历史/t01_scrm_contact_his.sql new file mode 100644 index 0000000..799f955 --- /dev/null +++ b/TK_Cust/dev/tk_cust/SCRM联系方式历史/t01_scrm_contact_his.sql @@ -0,0 +1,54 @@ + +DROP TABLE IF EXISTS p20_pdm.t01_scrm_contact_his; +CREATE TABLE IF NOT EXISTS p20_pdm.t01_scrm_contact_his ( + scrm_leads_id varchar(20) + , full_name varchar(20) + , mobile_number varchar(20) + , email varchar(50) + , company_name varchar(50) + , init_src_info varchar(50) + , init_src varchar(50) + , init_src_content varchar(50) + , post varchar(50) + , create_time timestamp(0) + , create_mode varchar(50) + , create_from varchar(50) + , city_name varchar(20) + , prov_name varchar(20) + , last_update_time timestamp(0) + , wechat_id varchar(100) + , 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( scrm_leads_id ) +); + + COMMENT ON COLUMN p20_pdm.t01_scrm_contact_his.scrm_leads_id IS 'SCRM线索ID'; + COMMENT ON COLUMN p20_pdm.t01_scrm_contact_his.full_name IS '姓名'; + COMMENT ON COLUMN p20_pdm.t01_scrm_contact_his.mobile_number IS '手机号码'; + COMMENT ON COLUMN p20_pdm.t01_scrm_contact_his.email IS '邮箱'; + COMMENT ON COLUMN p20_pdm.t01_scrm_contact_his.company_name IS '公司'; + COMMENT ON COLUMN p20_pdm.t01_scrm_contact_his.init_src_info IS '初始来源信息'; + COMMENT ON COLUMN p20_pdm.t01_scrm_contact_his.init_src IS '初始来源'; + COMMENT ON COLUMN p20_pdm.t01_scrm_contact_his.init_src_content IS '初始来源内容'; + COMMENT ON COLUMN p20_pdm.t01_scrm_contact_his.post IS '职位'; + COMMENT ON COLUMN p20_pdm.t01_scrm_contact_his.create_time IS '创建时间'; + COMMENT ON COLUMN p20_pdm.t01_scrm_contact_his.create_mode IS '创建方式'; + COMMENT ON COLUMN p20_pdm.t01_scrm_contact_his.create_from IS '创建自'; + COMMENT ON COLUMN p20_pdm.t01_scrm_contact_his.city_name IS '城市'; + COMMENT ON COLUMN p20_pdm.t01_scrm_contact_his.prov_name IS '省份'; + COMMENT ON COLUMN p20_pdm.t01_scrm_contact_his.last_update_time IS '最后更新时间'; + COMMENT ON COLUMN p20_pdm.t01_scrm_contact_his.wechat_id IS '身份-企业微信外部联系人'; + COMMENT ON COLUMN p20_pdm.t01_scrm_contact_his.Etl_Batch_No IS '作业批次号'; + COMMENT ON COLUMN p20_pdm.t01_scrm_contact_his.Etl_First_Dt IS '最初入库时间'; + COMMENT ON COLUMN p20_pdm.t01_scrm_contact_his.Etl_Job IS '作业名称'; + COMMENT ON COLUMN p20_pdm.t01_scrm_contact_his.Etl_Proc_Dt IS '本次入库时间'; + COMMENT ON COLUMN p20_pdm.t01_scrm_contact_his.Etl_Tx_Dt IS '作业运行时间'; + COMMENT ON COLUMN p20_pdm.t01_scrm_contact_his.Src_Sysname IS '来源系统'; + COMMENT ON COLUMN p20_pdm.t01_scrm_contact_his.Src_Table IS '来源表'; + +COMMENT ON TABLE p20_pdm.t01_scrm_contact_his IS 'SCRM联系方式历史'; \ No newline at end of file diff --git a/TK_Cust/dev/tk_cust/SCRM联系方式历史/t01_scrm_contact_his_agi.sql b/TK_Cust/dev/tk_cust/SCRM联系方式历史/t01_scrm_contact_his_agi.sql new file mode 100644 index 0000000..71f6a23 --- /dev/null +++ b/TK_Cust/dev/tk_cust/SCRM联系方式历史/t01_scrm_contact_his_agi.sql @@ -0,0 +1,271 @@ +/***************************************************************************************************/ +/*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_scrm_contact_his(SCRM联系方式历史) */ +/*Create Date:2024-01-15 15:10:02 */ +/*SDM Developed By: dev */ +/*SDM Developed Date: 2024-01-10 */ +/*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_scrm_contact_bf0912 */ +/*Job Type: Inbound transform (Tier 1 to Tier 2) */ +/*Target Table:t01_scrm_contact_his */ +/*ETL Job Name:t01_scrm_contact_his */ +/*ETL Frequency:Daily */ +/*ETL Policy:F2 */ +/********************************************************************************************/ +/*******Main Section**************************************************************************/ +\set ON_ERROR_STOP on +\set AUTOCOMMIT on +\timing on + + + +/*创建临时表加载当前数据 */ +CREATE TEMPORARY TABLE t01_scrm_contact_his_agi_CUR_I + ( LIKE :PDMDB.t01_scrm_contact_his) +ON COMMIT PRESERVE ROWS; + + + +/*创建临时表加载不同数据 */ +CREATE TEMPORARY TABLE t01_scrm_contact_his_agi_INS +( LIKE :PDMDB.t01_scrm_contact_his) +ON COMMIT PRESERVE ROWS; + + +/*****************************************************************************************************/ +/* GROUP 1:Source Table:s98_s_scrm_contact_bf0912*****************************************************/ +/*****************************************************************************************************/ +INSERT INTO t01_scrm_contact_his_agi_CUR_I ( + scrm_leads_id /*SCRM线索ID*/ + ,full_name /*姓名*/ + ,mobile_number /*手机号码*/ + ,email /*邮箱*/ + ,company_name /*公司*/ + ,init_src_info /*初始来源信息*/ + ,init_src /*初始来源*/ + ,init_src_content /*初始来源内容*/ + ,post /*职位*/ + ,create_time /*创建时间*/ + ,create_mode /*创建方式*/ + ,create_from /*创建自*/ + ,city_name /*城市*/ + ,prov_name /*省份*/ + ,last_update_time /*最后更新时间*/ + ,wechat_id /*身份-企业微信外部联系人*/ + ,Etl_Batch_No /*作业批次号*/ + ,Etl_First_Dt /*最初入库时间*/ + ,Etl_Job /*作业名称*/ + ,Etl_Proc_Dt /*本次入库时间*/ + ,Etl_Tx_Dt /*作业运行时间*/ + ,Src_Sysname /*来源系统*/ + ,Src_Table /*来源表*/ + ) +SELECT + COALESCE(TRIM(CAST(p0.cue_id AS varchar(20))),'') /*scrm_leads_id*/ + ,COALESCE(TRIM(CAST(p0.full_name AS varchar(20))),'') /*full_name*/ + ,COALESCE(TRIM(CAST(p0.mobile_number AS varchar(20))),'') /*mobile_number*/ + ,COALESCE(TRIM(CAST(p0.email AS varchar(50))),'') /*email*/ + ,COALESCE(TRIM(CAST(p0.company_name AS varchar(50))),'') /*company_name*/ + ,COALESCE(TRIM(CAST(p0.init_src_info AS varchar(50))),'') /*init_src_info*/ + ,COALESCE(TRIM(CAST(p0.init_src AS varchar(50))),'') /*init_src*/ + ,COALESCE(TRIM(CAST(p0.init_src_content AS varchar(50))),'') /*init_src_content*/ + ,COALESCE(TRIM(CAST(p0.post AS varchar(50))),'') /*post*/ + ,COALESCE(TO_TIMESTAMP(CAST(p0.create_time AS VARCHAR(19)),'YYYY-MM-DD HH24:mi:ss'),TO_TIMESTAMP(:NULLDATE,'YYYYMMDD')) /*create_time*/ + ,COALESCE(TRIM(CAST(p0.create_mode AS varchar(50))),'') /*create_mode*/ + ,COALESCE(TRIM(CAST(p0.create_from AS varchar(50))),'') /*create_from*/ + ,COALESCE(TRIM(CAST(p0.city_name AS varchar(20))),'') /*city_name*/ + ,COALESCE(TRIM(CAST(p0.prov_name AS varchar(20))),'') /*prov_name*/ + ,COALESCE(TO_TIMESTAMP(CAST(p0.last_update_time AS VARCHAR(19)),'YYYY-MM-DD HH24:mi:ss'),TO_TIMESTAMP(:NULLDATE,'YYYYMMDD')) /*last_update_time*/ + ,COALESCE(TRIM(CAST(p0.wechat_id AS varchar(100))),'') /*wechat_id*/ + ,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_scrm_contact_bf0912',1,3) /*Src_Sysname*/ + ,'s98_s_scrm_contact_bf0912' /*Src_Table*/ + +FROM p10_sa.s98_s_scrm_contact_bf0912 p0 +; + + + +/*将不同数据插入到临时表 */ +;INSERT INTO t01_scrm_contact_his_agi_INS ( + full_name /*姓名*/ + ,mobile_number /*手机号码*/ + ,email /*邮箱*/ + ,company_name /*公司*/ + ,init_src_info /*初始来源信息*/ + ,init_src /*初始来源*/ + ,init_src_content /*初始来源内容*/ + ,post /*职位*/ + ,create_time /*创建时间*/ + ,create_mode /*创建方式*/ + ,create_from /*创建自*/ + ,city_name /*城市*/ + ,prov_name /*省份*/ + ,last_update_time /*最后更新时间*/ + ,wechat_id /*身份-企业微信外部联系人*/ + ,scrm_leads_id /*SCRM线索ID*/ + ,Etl_Batch_No /*作业批次号*/ + ,Etl_First_Dt /*最初入库时间*/ + ,Etl_Job /*作业名称*/ + ,Etl_Proc_Dt /*本次入库时间*/ + ,Etl_Tx_Dt /*作业运行时间*/ + ,Src_Sysname /*来源系统*/ + ,Src_Table /*来源表*/ + +) + SELECT + P1.full_name /*姓名*/ + ,P1.mobile_number /*手机号码*/ + ,P1.email /*邮箱*/ + ,P1.company_name /*公司*/ + ,P1.init_src_info /*初始来源信息*/ + ,P1.init_src /*初始来源*/ + ,P1.init_src_content /*初始来源内容*/ + ,P1.post /*职位*/ + ,P1.create_time /*创建时间*/ + ,P1.create_mode /*创建方式*/ + ,P1.create_from /*创建自*/ + ,P1.city_name /*城市*/ + ,P1.prov_name /*省份*/ + ,P1.last_update_time /*最后更新时间*/ + ,P1.wechat_id /*身份-企业微信外部联系人*/ + ,P1.scrm_leads_id /*SCRM线索ID*/ + ,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_scrm_contact_his_agi_CUR_I P1 +LEFT JOIN :PDMDB.t01_scrm_contact_his P2 +ON P1.full_name = P2.full_name + AND P1.mobile_number = P2.mobile_number + AND P1.email = P2.email + AND P1.company_name = P2.company_name + AND P1.init_src_info = P2.init_src_info + AND P1.init_src = P2.init_src + AND P1.init_src_content = P2.init_src_content + AND P1.post = P2.post + AND P1.create_time = P2.create_time + AND P1.create_mode = P2.create_mode + AND P1.create_from = P2.create_from + AND P1.city_name = P2.city_name + AND P1.prov_name = P2.prov_name + AND P1.last_update_time = P2.last_update_time + AND P1.wechat_id = P2.wechat_id + AND P1.scrm_leads_id = P2.scrm_leads_id + +WHERE P2.full_name IS NULL + OR P2.mobile_number IS NULL + OR P2.email IS NULL + OR P2.company_name IS NULL + OR P2.init_src_info IS NULL + OR P2.init_src IS NULL + OR P2.init_src_content IS NULL + OR P2.post IS NULL + OR P2.create_time IS NULL + OR P2.create_mode IS NULL + OR P2.create_from IS NULL + OR P2.city_name IS NULL + OR P2.prov_name IS NULL + OR P2.last_update_time IS NULL + OR P2.wechat_id IS NULL + OR P2.scrm_leads_id IS NULL + +; +/*将新增数据插入到目标表 */ +;INSERT INTO :PDMDB.t01_scrm_contact_his ( + full_name /*姓名*/ + ,mobile_number /*手机号码*/ + ,email /*邮箱*/ + ,company_name /*公司*/ + ,init_src_info /*初始来源信息*/ + ,init_src /*初始来源*/ + ,init_src_content /*初始来源内容*/ + ,post /*职位*/ + ,create_time /*创建时间*/ + ,create_mode /*创建方式*/ + ,create_from /*创建自*/ + ,city_name /*城市*/ + ,prov_name /*省份*/ + ,last_update_time /*最后更新时间*/ + ,wechat_id /*身份-企业微信外部联系人*/ + ,scrm_leads_id /*SCRM线索ID*/ + ,Etl_Batch_No /*作业批次号*/ + ,Etl_First_Dt /*最初入库时间*/ + ,Etl_Job /*作业名称*/ + ,Etl_Proc_Dt /*本次入库时间*/ + ,Etl_Tx_Dt /*作业运行时间*/ + ,Src_Sysname /*来源系统*/ + ,Src_Table /*来源表*/ + +) +SELECT + P1.full_name /*姓名*/ + ,P1.mobile_number /*手机号码*/ + ,P1.email /*邮箱*/ + ,P1.company_name /*公司*/ + ,P1.init_src_info /*初始来源信息*/ + ,P1.init_src /*初始来源*/ + ,P1.init_src_content /*初始来源内容*/ + ,P1.post /*职位*/ + ,P1.create_time /*创建时间*/ + ,P1.create_mode /*创建方式*/ + ,P1.create_from /*创建自*/ + ,P1.city_name /*城市*/ + ,P1.prov_name /*省份*/ + ,P1.last_update_time /*最后更新时间*/ + ,P1.wechat_id /*身份-企业微信外部联系人*/ + ,P1.scrm_leads_id /*SCRM线索ID*/ + ,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_scrm_contact_his_agi_INS P1 +ON CONFLICT ( scrm_leads_id) +DO UPDATE SET + scrm_leads_id=excluded.scrm_leads_id + ,full_name=excluded.full_name + ,mobile_number=excluded.mobile_number + ,email=excluded.email + ,company_name=excluded.company_name + ,init_src_info=excluded.init_src_info + ,init_src=excluded.init_src + ,init_src_content=excluded.init_src_content + ,post=excluded.post + ,create_time=excluded.create_time + ,create_mode=excluded.create_mode + ,create_from=excluded.create_from + ,city_name=excluded.city_name + ,prov_name=excluded.prov_name + ,last_update_time=excluded.last_update_time + ,wechat_id=excluded.wechat_id + ,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_cust/泰克客户/wf_dag_tk_cust.py b/TK_Cust/dev/tk_cust/泰克客户/wf_dag_tk_cust.py new file mode 100644 index 0000000..729c024 --- /dev/null +++ b/TK_Cust/dev/tk_cust/泰克客户/wf_dag_tk_cust.py @@ -0,0 +1,239 @@ +#!/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_cust', 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_cust_failed", + html_content='