add workflow 泰克客户,dev
This commit is contained in:
parent
a1b63a3fdb
commit
24f1804268
|
@ -0,0 +1,36 @@
|
|||
|
||||
DROP TABLE IF EXISTS p60_mart.d_test;
|
||||
CREATE TABLE IF NOT EXISTS p60_mart.d_test (
|
||||
contact_id VARCHAR(50)
|
||||
, user_id VARCHAR(50)
|
||||
, crm_contact text
|
||||
, scrm_contact text
|
||||
, email VARCHAR(50)
|
||||
, livechat_contact text
|
||||
, udesk_contact text
|
||||
, 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)
|
||||
|
||||
);
|
||||
|
||||
COMMENT ON COLUMN p60_mart.d_test.contact_id IS '联系人编号';
|
||||
COMMENT ON COLUMN p60_mart.d_test.user_id IS '联系人联系方式';
|
||||
COMMENT ON COLUMN p60_mart.d_test.crm_contact IS 'CRM联系';
|
||||
COMMENT ON COLUMN p60_mart.d_test.scrm_contact IS 'SCRM联系';
|
||||
COMMENT ON COLUMN p60_mart.d_test.email IS '邮箱';
|
||||
COMMENT ON COLUMN p60_mart.d_test.livechat_contact IS 'Livechat联系';
|
||||
COMMENT ON COLUMN p60_mart.d_test.udesk_contact IS 'Udesk联系';
|
||||
COMMENT ON COLUMN p60_mart.d_test.Etl_Batch_No IS '作业批次号';
|
||||
COMMENT ON COLUMN p60_mart.d_test.Etl_First_Dt IS '最初入库时间';
|
||||
COMMENT ON COLUMN p60_mart.d_test.Etl_Job IS '作业名称';
|
||||
COMMENT ON COLUMN p60_mart.d_test.Etl_Proc_Dt IS '本次入库时间';
|
||||
COMMENT ON COLUMN p60_mart.d_test.Etl_Tx_Dt IS '作业运行时间';
|
||||
COMMENT ON COLUMN p60_mart.d_test.Src_Sysname IS '来源系统';
|
||||
COMMENT ON COLUMN p60_mart.d_test.Src_Table IS '来源表';
|
||||
|
||||
COMMENT ON TABLE p60_mart.d_test IS 't1';
|
|
@ -0,0 +1,124 @@
|
|||
/***************************************************************************************************/
|
||||
/*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 :d_test(t1) */
|
||||
/*Create Date:2024-04-10 14:55:58 */
|
||||
/*SDM Developed By: dev */
|
||||
/*SDM Developed Date: 2024-04-10 */
|
||||
/*SDM Checked By: dev */
|
||||
/*SDM Checked Date: 2024-04-10 */
|
||||
/*Script Developed By: dev */
|
||||
/*Script Checked By: dev */
|
||||
/*Source table 1: .v_cust_contact_mapping_all */
|
||||
/*Source table 2: .d_scrm_contact */
|
||||
/*Job Type: Inbound transform (Tier 1 to Tier 2) */
|
||||
/*Target Table:d_test */
|
||||
/*ETL Job Name:d_test */
|
||||
/*ETL Frequency:Daily */
|
||||
/*ETL Policy:F1 */
|
||||
/********************************************************************************************/
|
||||
/*******Main Section**************************************************************************/
|
||||
\set ON_ERROR_STOP on
|
||||
\set AUTOCOMMIT on
|
||||
\timing on
|
||||
|
||||
|
||||
|
||||
/*创建临时表加载当前数据 */
|
||||
CREATE TEMPORARY TABLE d_test_agi_CUR_I
|
||||
( LIKE :MARTDB.d_test)
|
||||
ON COMMIT PRESERVE ROWS;
|
||||
|
||||
|
||||
/*****************************************************************************************************/
|
||||
/* GROUP 1:Source Table:v_cust_contact_mapping_all****************************************************/
|
||||
/*****************************************************************************************************/
|
||||
|
||||
INSERT INTO d_test_agi_CUR_I (
|
||||
contact_id /*联系人编号*/
|
||||
,user_id /*联系人联系方式*/
|
||||
,crm_contact /*CRM联系*/
|
||||
,scrm_contact /*SCRM联系*/
|
||||
,email /*邮箱*/
|
||||
,livechat_contact /*Livechat联系*/
|
||||
,udesk_contact /*Udesk联系*/
|
||||
,Etl_Batch_No /*作业批次号*/
|
||||
,Etl_First_Dt /*最初入库时间*/
|
||||
,Etl_Job /*作业名称*/
|
||||
,Etl_Proc_Dt /*本次入库时间*/
|
||||
,Etl_Tx_Dt /*作业运行时间*/
|
||||
,Src_Sysname /*来源系统*/
|
||||
,Src_Table /*来源表*/
|
||||
)
|
||||
SELECT
|
||||
COALESCE(TRIM(p0.contact_id),'') /*contact_id*/
|
||||
,COALESCE(TRIM(p0.user_id),'') /*user_id*/
|
||||
,COALESCE(TRIM(p0.crm_contact),'') /*crm_contact*/
|
||||
,COALESCE(TRIM(p0.scrm_contact),'') /*scrm_contact*/
|
||||
,p1.email /*email*/
|
||||
,COALESCE(TRIM(p0.livechat_contact),'') /*livechat_contact*/
|
||||
,COALESCE(TRIM(p0.udesk_contact),'') /*udesk_contact*/
|
||||
,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('v_cust_contact_mapping_all',1,3) /*Src_Sysname*/
|
||||
,'v_cust_contact_mapping_all' /*Src_Table*/
|
||||
|
||||
FROM None.v_cust_contact_mapping_all p0
|
||||
LEFT JOIN None
|
||||
ON p0.scrm_contact =p1.scrm_leads_id
|
||||
|
||||
|
||||
;
|
||||
|
||||
|
||||
|
||||
/*从目标表中删除所有数据 d_test(t1) */
|
||||
DELETE FROM :MARTDB.d_test
|
||||
WHERE ETL_JOB=:ETLJOB;
|
||||
|
||||
|
||||
/*将新增数据插入到目标表 */
|
||||
;INSERT INTO :MARTDB.d_test (
|
||||
contact_id /*联系人编号*/
|
||||
,user_id /*联系人联系方式*/
|
||||
,crm_contact /*CRM联系*/
|
||||
,scrm_contact /*SCRM联系*/
|
||||
,email /*邮箱*/
|
||||
,livechat_contact /*Livechat联系*/
|
||||
,udesk_contact /*Udesk联系*/
|
||||
,Etl_Batch_No /*作业批次号*/
|
||||
,Etl_First_Dt /*最初入库时间*/
|
||||
,Etl_Job /*作业名称*/
|
||||
,Etl_Proc_Dt /*本次入库时间*/
|
||||
,Etl_Tx_Dt /*作业运行时间*/
|
||||
,Src_Sysname /*来源系统*/
|
||||
,Src_Table /*来源表*/
|
||||
|
||||
)
|
||||
SELECT
|
||||
P1.contact_id /*联系人编号*/
|
||||
,P1.user_id /*联系人联系方式*/
|
||||
,P1.crm_contact /*CRM联系*/
|
||||
,P1.scrm_contact /*SCRM联系*/
|
||||
,P1.email /*邮箱*/
|
||||
,P1.livechat_contact /*Livechat联系*/
|
||||
,P1.udesk_contact /*Udesk联系*/
|
||||
,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 d_test_agi_CUR_I P1
|
||||
|
||||
;
|
||||
/*****程序结束退出 */
|
||||
\q
|
||||
|
|
@ -0,0 +1,202 @@
|
|||
#!/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_on_failure': True,
|
||||
'email_on_retry':True,
|
||||
'start_date': datetime(2024, 1, 1),
|
||||
'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='<h3>您好,tk_cust作业失败,请及时处理" </h3>')
|
||||
|
||||
file_Tk01 = SSHOperator(
|
||||
ssh_hook=sshHook,
|
||||
task_id='file_Tk01',
|
||||
command='python /data/airflow/bin/FILELOD.py {{ params.my_param }} {{ ds_nodash }} >>/data/airflow/logs/file_load/file_load_{{ds_nodash}}.log 2>&1 ',
|
||||
params={'my_param':"Tk01"},
|
||||
depends_on_past=False,
|
||||
retries=3,
|
||||
dag=dag)
|
||||
|
||||
|
||||
livechat_6381 = SSHOperator(
|
||||
ssh_hook=sshHook,
|
||||
task_id='livechat_6381',
|
||||
command='/data/airflow/etl/SA/run_sa.sh {{ ds_nodash }} {{ params.my_param }} >>/data/airflow/logs/run_psql_{{ds_nodash}}.log 2>&1 ',
|
||||
params={'my_param':"S98_S_livechat"},
|
||||
depends_on_past=False,
|
||||
retries=3,
|
||||
dag=dag)
|
||||
|
||||
file_Udesk_record = SSHOperator(
|
||||
ssh_hook=sshHook,
|
||||
task_id='file_Udesk_record',
|
||||
command='python /data/airflow/bin/FILELOD.py {{ params.my_param }} {{ ds_nodash }} >>/data/airflow/logs/file_load/file_load_{{ds_nodash}}.log 2>&1 ',
|
||||
params={'my_param':"Udesk_record"},
|
||||
depends_on_past=False,
|
||||
retries=3,
|
||||
dag=dag)
|
||||
|
||||
|
||||
file_CRM_Raw_Leads = SSHOperator(
|
||||
ssh_hook=sshHook,
|
||||
task_id='file_CRM_Raw_Leads',
|
||||
command='python /data/airflow/bin/FILELOD.py {{ params.my_param }} {{ ds_nodash }} >>/data/airflow/logs/file_load/file_load_{{ds_nodash}}.log 2>&1 ',
|
||||
params={'my_param':"CRM_Raw_Leads"},
|
||||
depends_on_past=False,
|
||||
retries=3,
|
||||
dag=dag)
|
||||
|
||||
|
||||
udesk_record_3768 = SSHOperator(
|
||||
ssh_hook=sshHook,
|
||||
task_id='udesk_record_3768',
|
||||
command='/data/airflow/etl/SA/run_sa.sh {{ ds_nodash }} {{ params.my_param }} >>/data/airflow/logs/run_psql_{{ds_nodash}}.log 2>&1 ',
|
||||
params={'my_param':"S98_S_udesk_record"},
|
||||
depends_on_past=False,
|
||||
retries=3,
|
||||
dag=dag)
|
||||
|
||||
crm_raw_leads_6024 = SSHOperator(
|
||||
ssh_hook=sshHook,
|
||||
task_id='crm_raw_leads_6024',
|
||||
command='/data/airflow/etl/SA/run_sa.sh {{ ds_nodash }} {{ params.my_param }} >>/data/airflow/logs/run_psql_{{ds_nodash}}.log 2>&1 ',
|
||||
params={'my_param':"S98_S_crm_raw_leads"},
|
||||
depends_on_past=False,
|
||||
retries=3,
|
||||
dag=dag)
|
||||
|
||||
t01_livechat_record = SSHOperator(
|
||||
ssh_hook=sshHook,
|
||||
task_id='t01_livechat_record',
|
||||
command='/data/airflow/etl/PDM/run_sa.sh {{ ds_nodash }} {{params.my_param}} >>/data/airflow/logs/run_tpt_{{ds_nodash}}.log 2>&1 ',
|
||||
params={'my_param':"t01_livechat_record_agi"},
|
||||
depends_on_past=False,
|
||||
retries=3,
|
||||
dag=dag)
|
||||
china_city_4536 = SSHOperator(
|
||||
ssh_hook=sshHook,
|
||||
task_id='china_city_4536',
|
||||
command='/data/airflow/etl/SA/run_sa.sh {{ ds_nodash }} {{ params.my_param }} >>/data/airflow/logs/run_psql_{{ds_nodash}}.log 2>&1 ',
|
||||
params={'my_param':"S98_S_china_city"},
|
||||
depends_on_past=False,
|
||||
retries=3,
|
||||
dag=dag)
|
||||
|
||||
country_cde_3310 = SSHOperator(
|
||||
ssh_hook=sshHook,
|
||||
task_id='country_cde_3310',
|
||||
command='/data/airflow/etl/SA/run_sa.sh {{ ds_nodash }} {{ params.my_param }} >>/data/airflow/logs/run_psql_{{ds_nodash}}.log 2>&1 ',
|
||||
params={'my_param':"S98_S_country_cde"},
|
||||
depends_on_past=False,
|
||||
retries=3,
|
||||
dag=dag)
|
||||
|
||||
file_china_city = SSHOperator(
|
||||
ssh_hook=sshHook,
|
||||
task_id='file_china_city',
|
||||
command='python /data/airflow/bin/FILELOD.py {{ params.my_param }} {{ ds_nodash }} >>/data/airflow/logs/file_load/file_load_{{ds_nodash}}.log 2>&1 ',
|
||||
params={'my_param':"china_city"},
|
||||
depends_on_past=False,
|
||||
retries=3,
|
||||
dag=dag)
|
||||
|
||||
|
||||
file_country_cde = SSHOperator(
|
||||
ssh_hook=sshHook,
|
||||
task_id='file_country_cde',
|
||||
command='python /data/airflow/bin/FILELOD.py {{ params.my_param }} {{ ds_nodash }} >>/data/airflow/logs/file_load/file_load_{{ds_nodash}}.log 2>&1 ',
|
||||
params={'my_param':"country_cde"},
|
||||
depends_on_past=False,
|
||||
retries=3,
|
||||
dag=dag)
|
||||
|
||||
|
||||
t01_crm_raw_leads = SSHOperator(
|
||||
ssh_hook=sshHook,
|
||||
task_id='t01_crm_raw_leads',
|
||||
command='/data/airflow/etl/PDM/run_sa.sh {{ ds_nodash }} {{params.my_param}} >>/data/airflow/logs/run_tpt_{{ds_nodash}}.log 2>&1 ',
|
||||
params={'my_param':"t01_crm_raw_leads_agi"},
|
||||
depends_on_past=False,
|
||||
retries=3,
|
||||
dag=dag)
|
||||
t00_country_info = SSHOperator(
|
||||
ssh_hook=sshHook,
|
||||
task_id='t00_country_info',
|
||||
command='/data/airflow/etl/PDM/run_sa.sh {{ ds_nodash }} {{params.my_param}} >>/data/airflow/logs/run_tpt_{{ds_nodash}}.log 2>&1 ',
|
||||
params={'my_param':"t00_country_info_agi"},
|
||||
depends_on_past=False,
|
||||
retries=3,
|
||||
dag=dag)
|
||||
t00_china_city_info = SSHOperator(
|
||||
ssh_hook=sshHook,
|
||||
task_id='t00_china_city_info',
|
||||
command='/data/airflow/etl/PDM/run_sa.sh {{ ds_nodash }} {{params.my_param}} >>/data/airflow/logs/run_tpt_{{ds_nodash}}.log 2>&1 ',
|
||||
params={'my_param':"t00_china_city_info_agi"},
|
||||
depends_on_past=False,
|
||||
retries=3,
|
||||
dag=dag)
|
||||
t01_udesk_record = SSHOperator(
|
||||
ssh_hook=sshHook,
|
||||
task_id='t01_udesk_record',
|
||||
command='/data/airflow/etl/PDM/run_sa.sh {{ ds_nodash }} {{params.my_param}} >>/data/airflow/logs/run_tpt_{{ds_nodash}}.log 2>&1 ',
|
||||
params={'my_param':"t01_udesk_record_agi"},
|
||||
depends_on_past=False,
|
||||
retries=3,
|
||||
dag=dag)
|
||||
d_crm_contact = SSHOperator(
|
||||
ssh_hook=sshHook,
|
||||
task_id='d_crm_contact',
|
||||
command='/data/airflow/etl/PDM/run_sa.sh {{ ds_nodash }} {{params.my_param}} >>/data/airflow/logs/run_tpt_{{ds_nodash}}.log 2>&1 ',
|
||||
params={'my_param':"d_crm_contact_agi"},
|
||||
depends_on_past=False,
|
||||
retries=3,
|
||||
dag=dag)
|
||||
d_test = SSHOperator(
|
||||
ssh_hook=sshHook,
|
||||
task_id='d_test',
|
||||
command='/data/airflow/etl/PDM/run_sa.sh {{ ds_nodash }} {{params.my_param}} >>/data/airflow/logs/run_tpt_{{ds_nodash}}.log 2>&1 ',
|
||||
params={'my_param':"d_test_agi"},
|
||||
depends_on_past=False,
|
||||
retries=3,
|
||||
dag=dag)
|
||||
file_Tk01 >> livechat_6381
|
||||
file_Udesk_record >> udesk_record_3768
|
||||
file_CRM_Raw_Leads >> crm_raw_leads_6024
|
||||
livechat_6381 >> t01_livechat_record
|
||||
file_country_cde >> country_cde_3310
|
||||
file_china_city >> china_city_4536
|
||||
crm_raw_leads_6024 >> t01_crm_raw_leads
|
||||
country_cde_3310 >> t00_country_info
|
||||
china_city_4536 >> t00_china_city_info
|
||||
udesk_record_3768 >> t01_udesk_record
|
||||
t01_livechat_record >> d_crm_contact
|
||||
d_crm_contact >> task_failed
|
Loading…
Reference in New Issue