diff --git a/dev/workflow/TK_Cust/smart_ccc_cdr/ccc客户通话记录信息/cust_call_record_info.sql b/dev/workflow/TK_Cust/smart_ccc_cdr/ccc客户通话记录信息/cust_call_record_info.sql new file mode 100644 index 0000000..1df6437 --- /dev/null +++ b/dev/workflow/TK_Cust/smart_ccc_cdr/ccc客户通话记录信息/cust_call_record_info.sql @@ -0,0 +1,28 @@ + +DROP TABLE IF EXISTS p60_mart.cust_call_record_info; +CREATE TABLE IF NOT EXISTS p60_mart.cust_call_record_info ( + call_id VARCHAR(50) + , call_channel text + , start_time timestamp(0) + , bridge_duration numeric (0,0) + , call_qname VARCHAR(20) + , service_group VARCHAR(0) + , customer_number VARCHAR(20) + , name VARCHAR(20) + , email VARCHAR(0) + , company VARCHAR(0) + +); + + COMMENT ON COLUMN p60_mart.cust_call_record_info.call_id IS '通话编号'; + COMMENT ON COLUMN p60_mart.cust_call_record_info.call_channel IS '通话渠道'; + COMMENT ON COLUMN p60_mart.cust_call_record_info.start_time IS '开始时间'; + COMMENT ON COLUMN p60_mart.cust_call_record_info.bridge_duration IS '持续时间'; + COMMENT ON COLUMN p60_mart.cust_call_record_info.call_qname IS '通话队列名称'; + COMMENT ON COLUMN p60_mart.cust_call_record_info.service_group IS '服务组'; + COMMENT ON COLUMN p60_mart.cust_call_record_info.customer_number IS '客户电话'; + COMMENT ON COLUMN p60_mart.cust_call_record_info.name IS '姓名'; + COMMENT ON COLUMN p60_mart.cust_call_record_info.email IS '邮箱'; + COMMENT ON COLUMN p60_mart.cust_call_record_info.company IS '公司'; + +COMMENT ON TABLE p60_mart.cust_call_record_info IS 'ccc客户通话记录信息'; \ No newline at end of file diff --git a/dev/workflow/TK_Cust/smart_ccc_cdr/ccc客户通话记录信息/cust_call_record_info_agi.sql b/dev/workflow/TK_Cust/smart_ccc_cdr/ccc客户通话记录信息/cust_call_record_info_agi.sql new file mode 100644 index 0000000..43bb9b9 --- /dev/null +++ b/dev/workflow/TK_Cust/smart_ccc_cdr/ccc客户通话记录信息/cust_call_record_info_agi.sql @@ -0,0 +1,150 @@ +/***************************************************************************************************/ +/*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 :cust_call_record_info(ccc客户通话记录信息) */ +/*Create Date:2024-09-19 19:37:16 */ +/*SDM Developed By: dev */ +/*SDM Developed Date: 2024-09-19 */ +/*SDM Checked By: dev */ +/*SDM Checked Date: 2024-09-19 */ +/*Script Developed By: dev */ +/*Script Checked By: dev */ +/*Source table 1: :COMMDB.d_ccc_cust_info */ +/*Source table 2: :PDMDB.t01_udesk_record */ +/*Source table 3: :COMMDB.cust_call_ccc_record */ +/*Job Type: Inbound transform (Tier 1 to Tier 2) */ +/*Target Table:cust_call_record_info */ +/*ETL Job Name:cust_call_record_info */ +/*ETL Frequency:None */ +/*ETL Policy:F1 */ +/********************************************************************************************/ +/*******Main Section**************************************************************************/ +\set ON_ERROR_STOP on +\set AUTOCOMMIT on +\timing on + + + +/*创建临时表加载当前数据 */ +CREATE TEMPORARY TABLE cust_call_record_info_agi_CUR_I + ( LIKE :MARTDB.cust_call_record_info) +ON COMMIT PRESERVE ROWS; + + +/*****************************************************************************************************/ +/* GROUP 1:Source Table:cust_call_ccc_record**********************************************************/ +/*****************************************************************************************************/ + +INSERT INTO cust_call_record_info_agi_CUR_I ( + call_id /*通话编号*/ + ,call_channel /*通话渠道*/ + ,start_time /*开始时间*/ + ,bridge_duration /*持续时间*/ + ,call_qname /*通话队列名称*/ + ,service_group /*服务组*/ + ,customer_number /*客户电话*/ + ,name /*姓名*/ + ,email /*邮箱*/ + ,company /*公司*/ + ) +SELECT + COALESCE(TRIM(p0.call_id),'') /*call_id*/ + ,'Smart CCC' /*call_channel*/ + ,COALESCE(p0.start_time,TO_TIMESTAMP(:NULLDATE,'YYYYMMDD')) /*start_time*/ + ,COALESCE(CAST(p0.bridge_duration AS numeric (24,3)),0) /*bridge_duration*/ + ,COALESCE(TRIM(p0.call_qname),'') /*call_qname*/ + ,case when p0.call_qname in ('选型报价','选型报价统计','TW销售服务') then '产品报价' + when p0.call_qname in ('售前技术','售后技术','技术支持统计') then '技术支持' + when p0.call_qname in ('保内维修','保外维修与计量','维修计量统计') then '维修与校准' + when p0.call_qname in ('其他咨询','其他支持统计') then '其他' + when p0.call_qname in ('') then '' + else '其他' end /*service_group*/ + ,COALESCE(TRIM(p0.customer_number),'') /*customer_number*/ + ,coalesce(p1."name",'无') /*name*/ + ,coalesce(p1.email,'') /*email*/ + ,coalesce(p1.company,'') /*company*/ + +FROM :COMMDB.cust_call_ccc_record p0 +LEFT JOIN :COMMDB.d_ccc_cust_info p1 + ON p0.customer_number =p1.tel +where p0.hotline_name in ('400呼入','Inbound','SG-TSC') + +; + + + +/*****************************************************************************************************/ +/* GROUP 2:Source Table:t01_udesk_record**************************************************************/ +/*****************************************************************************************************/ +INSERT INTO cust_call_record_info_agi_CUR_I ( + call_id /*通话编号*/ + ,call_channel /*通话渠道*/ + ,start_time /*开始时间*/ + ,bridge_duration /*持续时间*/ + ,call_qname /*通话队列名称*/ + ,service_group /*服务组*/ + ,customer_number /*客户电话*/ + ,name /*姓名*/ + ,email /*邮箱*/ + ,company /*公司*/ + ) +SELECT + COALESCE(TRIM(p0.call_id),'') /*call_id*/ + ,'Udesk' /*call_channel*/ + ,p0.record_time /*start_time*/ + ,extract (epoch from p0.duration::time) /*bridge_duration*/ + ,p0.udesk_source /*call_qname*/ + ,case when udesk_source ='队列: IAM' then '产品报价' +when udesk_source in ('队列: TSC-KEI','队列: TSC-TEK') then '技术支持' +when udesk_source ='队列: SSO-TEK' then '维修与校准' +when udesk_source ='' then '' +else '其他' end /*service_group*/ + ,COALESCE(TRIM(p0.mobile_phone),'') /*customer_number*/ + ,cust /*name*/ + ,'' /*email*/ + ,COALESCE(TRIM(CAST(p0.company_name AS VARCHAR(200))),'') /*company*/ + +FROM :PDMDB.t01_udesk_record p0 +; + + + +/*从目标表中删除所有数据 cust_call_record_info(ccc客户通话记录信息) */ +DELETE FROM :MARTDB.cust_call_record_info +; + + +/*将新增数据插入到目标表 */ +;INSERT INTO :MARTDB.cust_call_record_info ( + call_id /*通话编号*/ + ,call_channel /*通话渠道*/ + ,start_time /*开始时间*/ + ,bridge_duration /*持续时间*/ + ,call_qname /*通话队列名称*/ + ,service_group /*服务组*/ + ,customer_number /*客户电话*/ + ,name /*姓名*/ + ,email /*邮箱*/ + ,company /*公司*/ + + ) + SELECT + P1.call_id /*通话编号*/ + ,P1.call_channel /*通话渠道*/ + ,P1.start_time /*开始时间*/ + ,P1.bridge_duration /*持续时间*/ + ,P1.call_qname /*通话队列名称*/ + ,P1.service_group /*服务组*/ + ,P1.customer_number /*客户电话*/ + ,P1.name /*姓名*/ + ,P1.email /*邮箱*/ + ,P1.company /*公司*/ + + FROM cust_call_record_info_agi_CUR_I P1 + +; +/*****程序结束退出 */ +\q + diff --git a/dev/workflow/TK_Cust/smart_ccc_cdr/天润Smart-ccc通话记录/wf_dag_smart_ccc_cdr.py b/dev/workflow/TK_Cust/smart_ccc_cdr/天润Smart-ccc通话记录/wf_dag_smart_ccc_cdr.py index 55adc39..e0ead43 100644 --- a/dev/workflow/TK_Cust/smart_ccc_cdr/天润Smart-ccc通话记录/wf_dag_smart_ccc_cdr.py +++ b/dev/workflow/TK_Cust/smart_ccc_cdr/天润Smart-ccc通话记录/wf_dag_smart_ccc_cdr.py @@ -155,6 +155,14 @@ params={'my_param':"cust_call_ccc_record_agi"}, depends_on_past=False, retries=3, dag=dag) +cust_call_record_info = SSHOperator( +ssh_hook=sshHook, +task_id='cust_call_record_info', +command='/data/airflow/etl/MART/run_psql.sh {{ ds_nodash }} {{params.my_param}} >>/data/airflow/logs/run_tpt_{{ds_nodash}}.log 2>&1 ', +params={'my_param':"cust_call_record_info_agi"}, +depends_on_past=False, +retries=3, +dag=dag) cc_cdr_ib_agent_list_load >> tr_cc_cdr_ib_agent_list_9092 cc_cdr_ib_list_load >> tr_cc_cdr_ib_list_9521 cc_cdr_ob_list_load >> tr_cc_cdr_ob_list_4070 @@ -165,4 +173,5 @@ tr_cc_cdr_ob_list_4070 >> t01_ccc_ob_record tr_cc_cdr_ob_detail_5097 >> t01_ccc_ob_record t01_ccc_ib_record >> cust_call_ccc_record t01_ccc_ob_record >> cust_call_ccc_record -cust_call_ccc_record >> task_failed +cust_call_ccc_record >> cust_call_record_info +cust_call_record_info >> task_failed