diff --git a/TK_Cust/dev/tk_cust/国家信息/t00_country_info.sql b/TK_Cust/dev/tk_cust/国家信息/t00_country_info.sql
new file mode 100644
index 0000000..9077be7
--- /dev/null
+++ b/TK_Cust/dev/tk_cust/国家信息/t00_country_info.sql
@@ -0,0 +1,36 @@
+
+DROP TABLE IF EXISTS p20_pdm.t00_country_info;
+CREATE TABLE IF NOT EXISTS p20_pdm.t00_country_info (
+ country_cn_name varchar(50)
+ , country_en_name varchar(50)
+ , country_cd varchar(10)
+ , country_abbr varchar(10)
+ , country_number int
+ , inter_tel_cd varchar(10)
+ , internet_name varchar(20)
+ , 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( country_cd )
+);
+
+ COMMENT ON COLUMN p20_pdm.t00_country_info.country_cn_name IS '国家';
+ COMMENT ON COLUMN p20_pdm.t00_country_info.country_en_name IS '国家英文名';
+ COMMENT ON COLUMN p20_pdm.t00_country_info.country_cd IS '国家代码';
+ COMMENT ON COLUMN p20_pdm.t00_country_info.country_abbr IS '国家缩写';
+ COMMENT ON COLUMN p20_pdm.t00_country_info.country_number IS '数字代码';
+ COMMENT ON COLUMN p20_pdm.t00_country_info.inter_tel_cd IS '国际区号';
+ COMMENT ON COLUMN p20_pdm.t00_country_info.internet_name IS '域名';
+ COMMENT ON COLUMN p20_pdm.t00_country_info.Etl_Batch_No IS '作业批次号';
+ COMMENT ON COLUMN p20_pdm.t00_country_info.Etl_First_Dt IS '最初入库时间';
+ COMMENT ON COLUMN p20_pdm.t00_country_info.Etl_Job IS '作业名称';
+ COMMENT ON COLUMN p20_pdm.t00_country_info.Etl_Proc_Dt IS '本次入库时间';
+ COMMENT ON COLUMN p20_pdm.t00_country_info.Etl_Tx_Dt IS '作业运行时间';
+ COMMENT ON COLUMN p20_pdm.t00_country_info.Src_Sysname IS '来源系统';
+ COMMENT ON COLUMN p20_pdm.t00_country_info.Src_Table IS '来源表';
+
+COMMENT ON TABLE p20_pdm.t00_country_info IS '国家信息';
\ No newline at end of file
diff --git a/TK_Cust/dev/tk_cust/国家信息/t00_country_info_agi.sql b/TK_Cust/dev/tk_cust/国家信息/t00_country_info_agi.sql
new file mode 100644
index 0000000..45933fc
--- /dev/null
+++ b/TK_Cust/dev/tk_cust/国家信息/t00_country_info_agi.sql
@@ -0,0 +1,190 @@
+/***************************************************************************************************/
+/*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 :t00_country_info(国家信息) */
+/*Create Date:2024-01-16 18:27:51 */
+/*SDM Developed By: dev */
+/*SDM Developed Date: 2024-01-16 */
+/*SDM Checked By: dev */
+/*SDM Checked Date: 2024-01-16 */
+/*Script Developed By: dev */
+/*Script Checked By: dev */
+/*Source table 1: p10_sa.s98_s_country_cde */
+/*Job Type: Inbound transform (Tier 1 to Tier 2) */
+/*Target Table:t00_country_info */
+/*ETL Job Name:t00_country_info */
+/*ETL Frequency:Daily */
+/*ETL Policy:F2 */
+/********************************************************************************************/
+/*******Main Section**************************************************************************/
+\set ON_ERROR_STOP on
+\set AUTOCOMMIT on
+\timing on
+
+
+
+/*创建临时表加载当前数据 */
+CREATE TEMPORARY TABLE t00_country_info_agi_CUR_I
+ ( LIKE :PDMDB.t00_country_info)
+ON COMMIT PRESERVE ROWS;
+
+
+
+/*创建临时表加载不同数据 */
+CREATE TEMPORARY TABLE t00_country_info_agi_INS
+( LIKE :PDMDB.t00_country_info)
+ON COMMIT PRESERVE ROWS;
+
+
+/*****************************************************************************************************/
+/* GROUP 1:Source Table:s98_s_country_cde*************************************************************/
+/*****************************************************************************************************/
+INSERT INTO t00_country_info_agi_CUR_I (
+ country_cn_name /*国家*/
+ ,country_en_name /*国家英文名*/
+ ,country_cd /*国家代码*/
+ ,country_abbr /*国家缩写*/
+ ,country_number /*数字代码*/
+ ,inter_tel_cd /*国际区号*/
+ ,internet_name /*域名*/
+ ,Etl_Batch_No /*作业批次号*/
+ ,Etl_First_Dt /*最初入库时间*/
+ ,Etl_Job /*作业名称*/
+ ,Etl_Proc_Dt /*本次入库时间*/
+ ,Etl_Tx_Dt /*作业运行时间*/
+ ,Src_Sysname /*来源系统*/
+ ,Src_Table /*来源表*/
+ )
+SELECT
+ COALESCE(TRIM(CAST(p0.country_cn_name AS varchar(50))),'') /*country_cn_name*/
+ ,COALESCE(TRIM(CAST(p0.country_en_name AS varchar(50))),'') /*country_en_name*/
+ ,COALESCE(TRIM(CAST(p0.country_cd AS varchar(10))),'') /*country_cd*/
+ ,COALESCE(TRIM(CAST(p0.country_abbr AS varchar(10))),'') /*country_abbr*/
+ ,COALESCE(CAST(p0.country_number AS int),0) /*country_number*/
+ ,COALESCE(TRIM(CAST(p0.inter_tel_cd AS varchar(10))),'') /*inter_tel_cd*/
+ ,COALESCE(TRIM(CAST(p0.internet_name AS varchar(20))),'') /*internet_name*/
+ ,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_country_cde',1,3) /*Src_Sysname*/
+ ,'s98_s_country_cde' /*Src_Table*/
+
+FROM p10_sa.s98_s_country_cde p0
+;
+
+
+
+/*将不同数据插入到临时表 */
+;INSERT INTO t00_country_info_agi_INS (
+ country_cn_name /*国家*/
+ ,country_en_name /*国家英文名*/
+ ,country_abbr /*国家缩写*/
+ ,country_number /*数字代码*/
+ ,inter_tel_cd /*国际区号*/
+ ,internet_name /*域名*/
+ ,country_cd /*国家代码*/
+ ,Etl_Batch_No /*作业批次号*/
+ ,Etl_First_Dt /*最初入库时间*/
+ ,Etl_Job /*作业名称*/
+ ,Etl_Proc_Dt /*本次入库时间*/
+ ,Etl_Tx_Dt /*作业运行时间*/
+ ,Src_Sysname /*来源系统*/
+ ,Src_Table /*来源表*/
+
+)
+ SELECT
+ P1.country_cn_name /*国家*/
+ ,P1.country_en_name /*国家英文名*/
+ ,P1.country_abbr /*国家缩写*/
+ ,P1.country_number /*数字代码*/
+ ,P1.inter_tel_cd /*国际区号*/
+ ,P1.internet_name /*域名*/
+ ,P1.country_cd /*国家代码*/
+ ,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 t00_country_info_agi_CUR_I P1
+LEFT JOIN :PDMDB.t00_country_info P2
+ON P1.country_cn_name = P2.country_cn_name
+ AND P1.country_en_name = P2.country_en_name
+ AND P1.country_abbr = P2.country_abbr
+ AND P1.country_number = P2.country_number
+ AND P1.inter_tel_cd = P2.inter_tel_cd
+ AND P1.internet_name = P2.internet_name
+ AND P1.country_cd = P2.country_cd
+
+WHERE P2.country_cn_name IS NULL
+ OR P2.country_en_name IS NULL
+ OR P2.country_abbr IS NULL
+ OR P2.country_number IS NULL
+ OR P2.inter_tel_cd IS NULL
+ OR P2.internet_name IS NULL
+ OR P2.country_cd IS NULL
+
+;
+/*将新增数据插入到目标表 */
+;INSERT INTO :PDMDB.t00_country_info (
+ country_cn_name /*国家*/
+ ,country_en_name /*国家英文名*/
+ ,country_abbr /*国家缩写*/
+ ,country_number /*数字代码*/
+ ,inter_tel_cd /*国际区号*/
+ ,internet_name /*域名*/
+ ,country_cd /*国家代码*/
+ ,Etl_Batch_No /*作业批次号*/
+ ,Etl_First_Dt /*最初入库时间*/
+ ,Etl_Job /*作业名称*/
+ ,Etl_Proc_Dt /*本次入库时间*/
+ ,Etl_Tx_Dt /*作业运行时间*/
+ ,Src_Sysname /*来源系统*/
+ ,Src_Table /*来源表*/
+
+)
+SELECT
+ P1.country_cn_name /*国家*/
+ ,P1.country_en_name /*国家英文名*/
+ ,P1.country_abbr /*国家缩写*/
+ ,P1.country_number /*数字代码*/
+ ,P1.inter_tel_cd /*国际区号*/
+ ,P1.internet_name /*域名*/
+ ,P1.country_cd /*国家代码*/
+ ,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 t00_country_info_agi_INS P1
+ON CONFLICT ( country_cd)
+DO UPDATE SET
+ country_cd=excluded.country_cd
+ ,country_cn_name=excluded.country_cn_name
+ ,country_en_name=excluded.country_en_name
+ ,country_abbr=excluded.country_abbr
+ ,country_number=excluded.country_number
+ ,inter_tel_cd=excluded.inter_tel_cd
+ ,internet_name=excluded.internet_name
+ ,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..8400408
--- /dev/null
+++ b/TK_Cust/dev/tk_cust/泰克客户/wf_dag_tk_cust.py
@@ -0,0 +1,324 @@
+#!/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='
您好,tk_cust作业失败,请及时处理"
')
+
+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)
+
+
+file_Update_af0912 = SSHOperator(
+ssh_hook=sshHook,
+task_id='file_Update_af0912',
+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':"Update_af0912"},
+depends_on_past=False,
+retries=3,
+dag=dag)
+
+
+file_Merge_af0912 = SSHOperator(
+ssh_hook=sshHook,
+task_id='file_Merge_af0912',
+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':"Merge_af0912"},
+depends_on_past=False,
+retries=3,
+dag=dag)
+
+
+file_SCRM_Contact_af0912 = SSHOperator(
+ssh_hook=sshHook,
+task_id='file_SCRM_Contact_af0912',
+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':"SCRM_Contact_af0912"},
+depends_on_past=False,
+retries=3,
+dag=dag)
+
+
+file_SCRM_Contact_bf0912 = SSHOperator(
+ssh_hook=sshHook,
+task_id='file_SCRM_Contact_bf0912',
+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':"SCRM_Contact_bf0912"},
+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)
+
+scrm_contact_af0912_6333 = SSHOperator(
+ssh_hook=sshHook,
+task_id='scrm_contact_af0912_6333',
+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_scrm_contact_af0912"},
+depends_on_past=False,
+retries=3,
+dag=dag)
+
+scrm_contact_update_af0912_6448 = SSHOperator(
+ssh_hook=sshHook,
+task_id='scrm_contact_update_af0912_6448',
+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_scrm_contact_update_af0912"},
+depends_on_past=False,
+retries=3,
+dag=dag)
+
+scrm_contact_merge_af0912_7975 = SSHOperator(
+ssh_hook=sshHook,
+task_id='scrm_contact_merge_af0912_7975',
+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_scrm_contact_merge_af0912"},
+depends_on_past=False,
+retries=3,
+dag=dag)
+
+scrm_contact_bf0912_6949 = SSHOperator(
+ssh_hook=sshHook,
+task_id='scrm_contact_bf0912_6949',
+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_scrm_contact_bf0912"},
+depends_on_past=False,
+retries=3,
+dag=dag)
+
+T01_SCRM_CONTACT = SSHOperator(
+ssh_hook=sshHook,
+task_id='T01_SCRM_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':"T01_SCRM_CONTACT_agi"},
+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)
+
+
+file_scrm_leads_bf0912 = SSHOperator(
+ssh_hook=sshHook,
+task_id='file_scrm_leads_bf0912',
+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':"scrm_leads_bf0912"},
+depends_on_past=False,
+retries=3,
+dag=dag)
+
+
+file_scrm_leads_af0912 = SSHOperator(
+ssh_hook=sshHook,
+task_id='file_scrm_leads_af0912',
+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':"scrm_leads_af0912"},
+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)
+
+scrm_leads_bf0912_508 = SSHOperator(
+ssh_hook=sshHook,
+task_id='scrm_leads_bf0912_508',
+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_scrm_leads_bf0912"},
+depends_on_past=False,
+retries=3,
+dag=dag)
+
+scrm_leads_af0912_5813 = SSHOperator(
+ssh_hook=sshHook,
+task_id='scrm_leads_af0912_5813',
+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_scrm_leads_af0912"},
+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_scrm_contact_his = SSHOperator(
+ssh_hook=sshHook,
+task_id='t01_scrm_contact_his',
+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_scrm_contact_his_agi"},
+depends_on_past=False,
+retries=3,
+dag=dag)
+t01_scrm_contact_update = SSHOperator(
+ssh_hook=sshHook,
+task_id='t01_scrm_contact_update',
+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_scrm_contact_update_agi"},
+depends_on_past=False,
+retries=3,
+dag=dag)
+t01_scrm_contact_merge = SSHOperator(
+ssh_hook=sshHook,
+task_id='t01_scrm_contact_merge',
+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_scrm_contact_merge_agi"},
+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)
+file_Tk01 >> livechat_6381
+file_Merge_af0912 >> scrm_contact_merge_af0912_7975
+file_SCRM_Contact_bf0912 >> scrm_contact_bf0912_6949
+file_SCRM_Contact_af0912 >> scrm_contact_af0912_6333
+file_Update_af0912 >> scrm_contact_update_af0912_6448
+scrm_contact_af0912_6333 >> T01_SCRM_CONTACT
+file_Udesk_record >> udesk_record_3768
+file_scrm_leads_bf0912 >> scrm_leads_bf0912_508
+file_scrm_leads_af0912 >> scrm_leads_af0912_5813
+file_CRM_Raw_Leads >> crm_raw_leads_6024
+scrm_contact_bf0912_6949 >> t01_scrm_contact_his
+scrm_contact_update_af0912_6448 >> t01_scrm_contact_update
+scrm_contact_merge_af0912_7975 >> t01_scrm_contact_merge
+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
+t00_country_info >> task_failed