From dc6066b00c407437d8f1af94b1cf4d598566bfb1 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 26 Dec 2023 11:26:59 +0800 Subject: [PATCH] =?UTF-8?q?add=20workflow=20=E6=B3=B0=E5=85=8B=E5=AE=A2?= =?UTF-8?q?=E6=88=B7,dev?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tk_cust/livechat/sa_foreign_tables.sql | 32 ++ TK_Cust/dev/tk_cust/livechat/sa_tables.sql | 99 ++++++ .../dev/tk_cust/泰克客户/wf_dag_tk_cust.py | 61 ++++ .../dev/tk_cust/聊天记录/t01_chatrecord.sql | 62 ++++ .../tk_cust/聊天记录/t01_chatrecord_agi.sql | 307 ++++++++++++++++++ 5 files changed, 561 insertions(+) create mode 100644 TK_Cust/dev/tk_cust/livechat/sa_foreign_tables.sql create mode 100644 TK_Cust/dev/tk_cust/livechat/sa_tables.sql create mode 100644 TK_Cust/dev/tk_cust/泰克客户/wf_dag_tk_cust.py create mode 100644 TK_Cust/dev/tk_cust/聊天记录/t01_chatrecord.sql create mode 100644 TK_Cust/dev/tk_cust/聊天记录/t01_chatrecord_agi.sql diff --git a/TK_Cust/dev/tk_cust/livechat/sa_foreign_tables.sql b/TK_Cust/dev/tk_cust/livechat/sa_foreign_tables.sql new file mode 100644 index 0000000..58a9c79 --- /dev/null +++ b/TK_Cust/dev/tk_cust/livechat/sa_foreign_tables.sql @@ -0,0 +1,32 @@ + +CREATE FOREIGN TABLE if not exists p00_tal.S98_S_livechat ( + conference_id TEXT + , create_date TEXT + , start_date TEXT + , start_url TEXT + , referrer TEXT + , chat_dura TEXT + , queue_dura TEXT + , visitor_id TEXT + , visit_nick TEXT + , visitor_ip TEXT + , visitor_email TEXT + , operator_id TEXT + , group_id TEXT + , group_name TEXT + , rate TEXT + , last_rate_comment TEXT + , operator_1_nick TEXT + , operator_2_nick TEXT + , operator_3_nick TEXT + , operator_4_nick TEXT + , etl_tx_dt TIMESTAMP +) + + +SERVER pgsql_server_S98_S OPTIONS(schema_name 'data_api', table_name 'livechat' ); + + + + + diff --git a/TK_Cust/dev/tk_cust/livechat/sa_tables.sql b/TK_Cust/dev/tk_cust/livechat/sa_tables.sql new file mode 100644 index 0000000..ba2eb00 --- /dev/null +++ b/TK_Cust/dev/tk_cust/livechat/sa_tables.sql @@ -0,0 +1,99 @@ + +create table if not exists p10_sa.S98_S_livechat ( + conference_id TEXT + , create_date TEXT + , start_date TEXT + , start_url TEXT + , referrer TEXT + , chat_dura TEXT + , queue_dura TEXT + , visitor_id TEXT + , visit_nick TEXT + , visitor_ip TEXT + , visitor_email TEXT + , operator_id TEXT + , group_id TEXT + , group_name TEXT + , rate TEXT + , last_rate_comment TEXT + , operator_1_nick TEXT + , operator_2_nick TEXT + , operator_3_nick TEXT + , operator_4_nick TEXT + , etl_tx_dt TIMESTAMP +) ; + + COMMENT ON COLUMN p10_sa.S98_S_livechat.conference_id IS 'conferenceId'; + COMMENT ON COLUMN p10_sa.S98_S_livechat.create_date IS 'chat creation date Asia/Shanghai'; + COMMENT ON COLUMN p10_sa.S98_S_livechat.start_date IS 'chat start date Asia/Shanghai'; + COMMENT ON COLUMN p10_sa.S98_S_livechat.start_url IS 'chat start url'; + COMMENT ON COLUMN p10_sa.S98_S_livechat.referrer IS 'referrer'; + COMMENT ON COLUMN p10_sa.S98_S_livechat.chat_dura IS 'chat duration in seconds'; + COMMENT ON COLUMN p10_sa.S98_S_livechat.queue_dura IS 'queue duration in seconds'; + COMMENT ON COLUMN p10_sa.S98_S_livechat.visitor_id IS 'visitor livechat id'; + COMMENT ON COLUMN p10_sa.S98_S_livechat.visit_nick IS 'visitor nick'; + COMMENT ON COLUMN p10_sa.S98_S_livechat.visitor_ip IS 'visitor ip'; + COMMENT ON COLUMN p10_sa.S98_S_livechat.visitor_email IS 'visitor email'; + COMMENT ON COLUMN p10_sa.S98_S_livechat.operator_id IS 'last operator id'; + COMMENT ON COLUMN p10_sa.S98_S_livechat.group_id IS 'group'; + COMMENT ON COLUMN p10_sa.S98_S_livechat.group_name IS 'group name'; + COMMENT ON COLUMN p10_sa.S98_S_livechat.rate IS 'rate'; + COMMENT ON COLUMN p10_sa.S98_S_livechat.last_rate_comment IS 'last rate comment'; + COMMENT ON COLUMN p10_sa.S98_S_livechat.operator_1_nick IS 'operator 1 nick'; + COMMENT ON COLUMN p10_sa.S98_S_livechat.operator_2_nick IS 'operator 2 nick'; + COMMENT ON COLUMN p10_sa.S98_S_livechat.operator_3_nick IS 'operator 3 nick'; + COMMENT ON COLUMN p10_sa.S98_S_livechat.operator_4_nick IS 'operator 4 nick'; + COMMENT ON COLUMN p10_sa.S98_S_livechat.etl_tx_dt IS ''; + +COMMENT ON TABLE p10_sa.S98_S_livechat IS ''; + + + +create table if not exists p12_sfull.S98_S_livechat ( + conference_id TEXT + , create_date TEXT + , start_date TEXT + , start_url TEXT + , referrer TEXT + , chat_dura TEXT + , queue_dura TEXT + , visitor_id TEXT + , visit_nick TEXT + , visitor_ip TEXT + , visitor_email TEXT + , operator_id TEXT + , group_id TEXT + , group_name TEXT + , rate TEXT + , last_rate_comment TEXT + , operator_1_nick TEXT + , operator_2_nick TEXT + , operator_3_nick TEXT + , operator_4_nick TEXT + , etl_tx_dt TIMESTAMP +) ; + + COMMENT ON COLUMN p12_sfull.S98_S_livechat.conference_id IS 'conferenceId'; + COMMENT ON COLUMN p12_sfull.S98_S_livechat.create_date IS 'chat creation date Asia/Shanghai'; + COMMENT ON COLUMN p12_sfull.S98_S_livechat.start_date IS 'chat start date Asia/Shanghai'; + COMMENT ON COLUMN p12_sfull.S98_S_livechat.start_url IS 'chat start url'; + COMMENT ON COLUMN p12_sfull.S98_S_livechat.referrer IS 'referrer'; + COMMENT ON COLUMN p12_sfull.S98_S_livechat.chat_dura IS 'chat duration in seconds'; + COMMENT ON COLUMN p12_sfull.S98_S_livechat.queue_dura IS 'queue duration in seconds'; + COMMENT ON COLUMN p12_sfull.S98_S_livechat.visitor_id IS 'visitor livechat id'; + COMMENT ON COLUMN p12_sfull.S98_S_livechat.visit_nick IS 'visitor nick'; + COMMENT ON COLUMN p12_sfull.S98_S_livechat.visitor_ip IS 'visitor ip'; + COMMENT ON COLUMN p12_sfull.S98_S_livechat.visitor_email IS 'visitor email'; + COMMENT ON COLUMN p12_sfull.S98_S_livechat.operator_id IS 'last operator id'; + COMMENT ON COLUMN p12_sfull.S98_S_livechat.group_id IS 'group'; + COMMENT ON COLUMN p12_sfull.S98_S_livechat.group_name IS 'group name'; + COMMENT ON COLUMN p12_sfull.S98_S_livechat.rate IS 'rate'; + COMMENT ON COLUMN p12_sfull.S98_S_livechat.last_rate_comment IS 'last rate comment'; + COMMENT ON COLUMN p12_sfull.S98_S_livechat.operator_1_nick IS 'operator 1 nick'; + COMMENT ON COLUMN p12_sfull.S98_S_livechat.operator_2_nick IS 'operator 2 nick'; + COMMENT ON COLUMN p12_sfull.S98_S_livechat.operator_3_nick IS 'operator 3 nick'; + COMMENT ON COLUMN p12_sfull.S98_S_livechat.operator_4_nick IS 'operator 4 nick'; + COMMENT ON COLUMN p12_sfull.S98_S_livechat.etl_tx_dt IS ''; + +COMMENT ON TABLE p12_sfull.S98_S_livechat IS ''; + 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..ee1267c --- /dev/null +++ b/TK_Cust/dev/tk_cust/泰克客户/wf_dag_tk_cust.py @@ -0,0 +1,61 @@ +#!/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) + + +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_Tk01 >> livechat_6381 +livechat_6381 >> task_failed diff --git a/TK_Cust/dev/tk_cust/聊天记录/t01_chatrecord.sql b/TK_Cust/dev/tk_cust/聊天记录/t01_chatrecord.sql new file mode 100644 index 0000000..9d96098 --- /dev/null +++ b/TK_Cust/dev/tk_cust/聊天记录/t01_chatrecord.sql @@ -0,0 +1,62 @@ + +DROP TABLE IF EXISTS p20_pdm.t01_chatrecord; +CREATE TABLE IF NOT EXISTS p20_pdm.t01_chatrecord ( + conference_id text + , create_date text + , start_date text + , start_url text + , referrer text + , chat_dura text + , queue_dura text + , visitor_id text + , visit_nick text + , visitor_ip text + , visitor_email text + , operator_id text + , group_id text + , group_name text + , rate text + , last_rate_comment text + , operator_1_nick text + , operator_2_nick text + , operator_3_nick text + , operator_4_nick 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) + ,primary key( conference_id ) +); + + COMMENT ON COLUMN p20_pdm.t01_chatrecord.conference_id IS 'conferenceId'; + COMMENT ON COLUMN p20_pdm.t01_chatrecord.create_date IS 'chat creation date Asia/Shanghai'; + COMMENT ON COLUMN p20_pdm.t01_chatrecord.start_date IS 'chat start date Asia/Shanghai'; + COMMENT ON COLUMN p20_pdm.t01_chatrecord.start_url IS 'chat start url'; + COMMENT ON COLUMN p20_pdm.t01_chatrecord.referrer IS 'referrer'; + COMMENT ON COLUMN p20_pdm.t01_chatrecord.chat_dura IS 'chat duration in seconds'; + COMMENT ON COLUMN p20_pdm.t01_chatrecord.queue_dura IS 'queue duration in seconds'; + COMMENT ON COLUMN p20_pdm.t01_chatrecord.visitor_id IS 'visitor livechat id'; + COMMENT ON COLUMN p20_pdm.t01_chatrecord.visit_nick IS 'visitor nick'; + COMMENT ON COLUMN p20_pdm.t01_chatrecord.visitor_ip IS 'visitor ip'; + COMMENT ON COLUMN p20_pdm.t01_chatrecord.visitor_email IS 'visitor email'; + COMMENT ON COLUMN p20_pdm.t01_chatrecord.operator_id IS 'last operator id'; + COMMENT ON COLUMN p20_pdm.t01_chatrecord.group_id IS 'group'; + COMMENT ON COLUMN p20_pdm.t01_chatrecord.group_name IS 'group name'; + COMMENT ON COLUMN p20_pdm.t01_chatrecord.rate IS 'rate'; + COMMENT ON COLUMN p20_pdm.t01_chatrecord.last_rate_comment IS 'last rate comment'; + COMMENT ON COLUMN p20_pdm.t01_chatrecord.operator_1_nick IS 'operator 1 nick'; + COMMENT ON COLUMN p20_pdm.t01_chatrecord.operator_2_nick IS 'operator 2 nick'; + COMMENT ON COLUMN p20_pdm.t01_chatrecord.operator_3_nick IS 'operator 3 nick'; + COMMENT ON COLUMN p20_pdm.t01_chatrecord.operator_4_nick IS 'operator 4 nick'; + COMMENT ON COLUMN p20_pdm.t01_chatrecord.Etl_Batch_No IS '作业批次号'; + COMMENT ON COLUMN p20_pdm.t01_chatrecord.Etl_First_Dt IS '最初入库时间'; + COMMENT ON COLUMN p20_pdm.t01_chatrecord.Etl_Job IS '作业名称'; + COMMENT ON COLUMN p20_pdm.t01_chatrecord.Etl_Proc_Dt IS '本次入库时间'; + COMMENT ON COLUMN p20_pdm.t01_chatrecord.Etl_Tx_Dt IS '作业运行时间'; + COMMENT ON COLUMN p20_pdm.t01_chatrecord.Src_Sysname IS '来源系统'; + COMMENT ON COLUMN p20_pdm.t01_chatrecord.Src_Table IS '来源表'; + +COMMENT ON TABLE p20_pdm.t01_chatrecord IS '聊天记录'; \ No newline at end of file diff --git a/TK_Cust/dev/tk_cust/聊天记录/t01_chatrecord_agi.sql b/TK_Cust/dev/tk_cust/聊天记录/t01_chatrecord_agi.sql new file mode 100644 index 0000000..3c38b7a --- /dev/null +++ b/TK_Cust/dev/tk_cust/聊天记录/t01_chatrecord_agi.sql @@ -0,0 +1,307 @@ +/***************************************************************************************************/ +/*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_chatrecord(聊天记录) */ +/*Create Date:2023-12-26 11:11:23 */ +/*SDM Developed By: dev */ +/*SDM Developed Date: 2023-12-26 */ +/*SDM Checked By: dev */ +/*SDM Checked Date: 2023-12-26 */ +/*Script Developed By: dev */ +/*Script Checked By: dev */ +/*Source table 1: p10_sa.s98_s_livechat */ +/*Job Type: Inbound transform (Tier 1 to Tier 2) */ +/*Target Table:t01_chatrecord */ +/*ETL Job Name:t01_chatrecord */ +/*ETL Frequency:Daily */ +/*ETL Policy:F2 */ +/********************************************************************************************/ +/*******Main Section**************************************************************************/ +\set ON_ERROR_STOP on +\set AUTOCOMMIT on +\timing on + + + +/*创建临时表加载当前数据 */ +CREATE TEMPORARY TABLE t01_chatrecord_agi_CUR_I + ( LIKE :PDMDB.t01_chatrecord) +ON COMMIT PRESERVE ROWS; + + + +/*创建临时表加载不同数据 */ +CREATE TEMPORARY TABLE t01_chatrecord_agi_INS +( LIKE :PDMDB.t01_chatrecord) +ON COMMIT PRESERVE ROWS; + + +/*****************************************************************************************************/ +/* GROUP 1:Source Table:s98_s_livechat****************************************************************/ +/*****************************************************************************************************/ +INSERT INTO t01_chatrecord_agi_CUR_I ( + conference_id /*conferenceId*/ + ,create_date /*chat creation date Asia/Shanghai*/ + ,start_date /*chat start date Asia/Shanghai*/ + ,start_url /*chat start url*/ + ,referrer /*referrer*/ + ,chat_dura /*chat duration in seconds*/ + ,queue_dura /*queue duration in seconds*/ + ,visitor_id /*visitor livechat id*/ + ,visit_nick /*visitor nick*/ + ,visitor_ip /*visitor ip*/ + ,visitor_email /*visitor email*/ + ,operator_id /*last operator id*/ + ,group_id /*group*/ + ,group_name /*group name*/ + ,rate /*rate*/ + ,last_rate_comment /*last rate comment*/ + ,operator_1_nick /*operator 1 nick*/ + ,operator_2_nick /*operator 2 nick*/ + ,operator_3_nick /*operator 3 nick*/ + ,operator_4_nick /*operator 4 nick*/ + ,Etl_Batch_No /*作业批次号*/ + ,Etl_First_Dt /*最初入库时间*/ + ,Etl_Job /*作业名称*/ + ,Etl_Proc_Dt /*本次入库时间*/ + ,Etl_Tx_Dt /*作业运行时间*/ + ,Src_Sysname /*来源系统*/ + ,Src_Table /*来源表*/ + ) +SELECT + COALESCE(TRIM(p0.conference_id),'') /*conference_id*/ + ,COALESCE(TRIM(p0.create_date),'') /*create_date*/ + ,COALESCE(TRIM(p0.start_date),'') /*start_date*/ + ,COALESCE(TRIM(p0.start_url),'') /*start_url*/ + ,COALESCE(TRIM(p0.referrer),'') /*referrer*/ + ,COALESCE(TRIM(p0.chat_dura),'') /*chat_dura*/ + ,COALESCE(TRIM(p0.queue_dura),'') /*queue_dura*/ + ,COALESCE(TRIM(p0.visitor_id),'') /*visitor_id*/ + ,COALESCE(TRIM(p0.visit_nick),'') /*visit_nick*/ + ,COALESCE(TRIM(p0.visitor_ip),'') /*visitor_ip*/ + ,COALESCE(TRIM(p0.visitor_email),'') /*visitor_email*/ + ,COALESCE(TRIM(p0.operator_id),'') /*operator_id*/ + ,COALESCE(TRIM(p0.group_id),'') /*group_id*/ + ,COALESCE(TRIM(p0.group_name),'') /*group_name*/ + ,COALESCE(TRIM(p0.rate),'') /*rate*/ + ,COALESCE(TRIM(p0.last_rate_comment),'') /*last_rate_comment*/ + ,COALESCE(TRIM(p0.operator_1_nick),'') /*operator_1_nick*/ + ,COALESCE(TRIM(p0.operator_2_nick),'') /*operator_2_nick*/ + ,COALESCE(TRIM(p0.operator_3_nick),'') /*operator_3_nick*/ + ,COALESCE(TRIM(p0.operator_4_nick),'') /*operator_4_nick*/ + ,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_livechat',1,3) /*Src_Sysname*/ + ,'s98_s_livechat' /*Src_Table*/ + +FROM p10_sa.s98_s_livechat p0 +; + + + +/*将不同数据插入到临时表 */ +;INSERT INTO t01_chatrecord_agi_INS ( + create_date /*chat creation date Asia/Shanghai*/ + ,start_date /*chat start date Asia/Shanghai*/ + ,start_url /*chat start url*/ + ,referrer /*referrer*/ + ,chat_dura /*chat duration in seconds*/ + ,queue_dura /*queue duration in seconds*/ + ,visitor_id /*visitor livechat id*/ + ,visit_nick /*visitor nick*/ + ,visitor_ip /*visitor ip*/ + ,visitor_email /*visitor email*/ + ,operator_id /*last operator id*/ + ,group_id /*group*/ + ,group_name /*group name*/ + ,rate /*rate*/ + ,last_rate_comment /*last rate comment*/ + ,operator_1_nick /*operator 1 nick*/ + ,operator_2_nick /*operator 2 nick*/ + ,operator_3_nick /*operator 3 nick*/ + ,operator_4_nick /*operator 4 nick*/ + ,conference_id /*conferenceId*/ + ,Etl_Batch_No /*作业批次号*/ + ,Etl_First_Dt /*最初入库时间*/ + ,Etl_Job /*作业名称*/ + ,Etl_Proc_Dt /*本次入库时间*/ + ,Etl_Tx_Dt /*作业运行时间*/ + ,Src_Sysname /*来源系统*/ + ,Src_Table /*来源表*/ + +) + SELECT + P1.create_date /*chat creation date Asia/Shanghai*/ + ,P1.start_date /*chat start date Asia/Shanghai*/ + ,P1.start_url /*chat start url*/ + ,P1.referrer /*referrer*/ + ,P1.chat_dura /*chat duration in seconds*/ + ,P1.queue_dura /*queue duration in seconds*/ + ,P1.visitor_id /*visitor livechat id*/ + ,P1.visit_nick /*visitor nick*/ + ,P1.visitor_ip /*visitor ip*/ + ,P1.visitor_email /*visitor email*/ + ,P1.operator_id /*last operator id*/ + ,P1.group_id /*group*/ + ,P1.group_name /*group name*/ + ,P1.rate /*rate*/ + ,P1.last_rate_comment /*last rate comment*/ + ,P1.operator_1_nick /*operator 1 nick*/ + ,P1.operator_2_nick /*operator 2 nick*/ + ,P1.operator_3_nick /*operator 3 nick*/ + ,P1.operator_4_nick /*operator 4 nick*/ + ,P1.conference_id /*conferenceId*/ + ,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_chatrecord_agi_CUR_I P1 +LEFT JOIN :PDMDB.t01_chatrecord P2 +ON P1.create_date = P2.create_date + AND P1.start_date = P2.start_date + AND P1.start_url = P2.start_url + AND P1.referrer = P2.referrer + AND P1.chat_dura = P2.chat_dura + AND P1.queue_dura = P2.queue_dura + AND P1.visitor_id = P2.visitor_id + AND P1.visit_nick = P2.visit_nick + AND P1.visitor_ip = P2.visitor_ip + AND P1.visitor_email = P2.visitor_email + AND P1.operator_id = P2.operator_id + AND P1.group_id = P2.group_id + AND P1.group_name = P2.group_name + AND P1.rate = P2.rate + AND P1.last_rate_comment = P2.last_rate_comment + AND P1.operator_1_nick = P2.operator_1_nick + AND P1.operator_2_nick = P2.operator_2_nick + AND P1.operator_3_nick = P2.operator_3_nick + AND P1.operator_4_nick = P2.operator_4_nick + AND P1.conference_id = P2.conference_id + +WHERE P2.create_date IS NULL + OR P2.start_date IS NULL + OR P2.start_url IS NULL + OR P2.referrer IS NULL + OR P2.chat_dura IS NULL + OR P2.queue_dura IS NULL + OR P2.visitor_id IS NULL + OR P2.visit_nick IS NULL + OR P2.visitor_ip IS NULL + OR P2.visitor_email IS NULL + OR P2.operator_id IS NULL + OR P2.group_id IS NULL + OR P2.group_name IS NULL + OR P2.rate IS NULL + OR P2.last_rate_comment IS NULL + OR P2.operator_1_nick IS NULL + OR P2.operator_2_nick IS NULL + OR P2.operator_3_nick IS NULL + OR P2.operator_4_nick IS NULL + OR P2.conference_id IS NULL + +; +/*将新增数据插入到目标表 */ +;INSERT INTO :PDMDB.t01_chatrecord ( + create_date /*chat creation date Asia/Shanghai*/ + ,start_date /*chat start date Asia/Shanghai*/ + ,start_url /*chat start url*/ + ,referrer /*referrer*/ + ,chat_dura /*chat duration in seconds*/ + ,queue_dura /*queue duration in seconds*/ + ,visitor_id /*visitor livechat id*/ + ,visit_nick /*visitor nick*/ + ,visitor_ip /*visitor ip*/ + ,visitor_email /*visitor email*/ + ,operator_id /*last operator id*/ + ,group_id /*group*/ + ,group_name /*group name*/ + ,rate /*rate*/ + ,last_rate_comment /*last rate comment*/ + ,operator_1_nick /*operator 1 nick*/ + ,operator_2_nick /*operator 2 nick*/ + ,operator_3_nick /*operator 3 nick*/ + ,operator_4_nick /*operator 4 nick*/ + ,conference_id /*conferenceId*/ + ,Etl_Batch_No /*作业批次号*/ + ,Etl_First_Dt /*最初入库时间*/ + ,Etl_Job /*作业名称*/ + ,Etl_Proc_Dt /*本次入库时间*/ + ,Etl_Tx_Dt /*作业运行时间*/ + ,Src_Sysname /*来源系统*/ + ,Src_Table /*来源表*/ + +) +SELECT + P1.create_date /*chat creation date Asia/Shanghai*/ + ,P1.start_date /*chat start date Asia/Shanghai*/ + ,P1.start_url /*chat start url*/ + ,P1.referrer /*referrer*/ + ,P1.chat_dura /*chat duration in seconds*/ + ,P1.queue_dura /*queue duration in seconds*/ + ,P1.visitor_id /*visitor livechat id*/ + ,P1.visit_nick /*visitor nick*/ + ,P1.visitor_ip /*visitor ip*/ + ,P1.visitor_email /*visitor email*/ + ,P1.operator_id /*last operator id*/ + ,P1.group_id /*group*/ + ,P1.group_name /*group name*/ + ,P1.rate /*rate*/ + ,P1.last_rate_comment /*last rate comment*/ + ,P1.operator_1_nick /*operator 1 nick*/ + ,P1.operator_2_nick /*operator 2 nick*/ + ,P1.operator_3_nick /*operator 3 nick*/ + ,P1.operator_4_nick /*operator 4 nick*/ + ,P1.conference_id /*conferenceId*/ + ,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_chatrecord_agi_INS P1 +ON CONFLICT ( conference_id) +DO UPDATE SET + conference_id=excluded.conference_id + ,create_date=excluded.create_date + ,start_date=excluded.start_date + ,start_url=excluded.start_url + ,referrer=excluded.referrer + ,chat_dura=excluded.chat_dura + ,queue_dura=excluded.queue_dura + ,visitor_id=excluded.visitor_id + ,visit_nick=excluded.visit_nick + ,visitor_ip=excluded.visitor_ip + ,visitor_email=excluded.visitor_email + ,operator_id=excluded.operator_id + ,group_id=excluded.group_id + ,group_name=excluded.group_name + ,rate=excluded.rate + ,last_rate_comment=excluded.last_rate_comment + ,operator_1_nick=excluded.operator_1_nick + ,operator_2_nick=excluded.operator_2_nick + ,operator_3_nick=excluded.operator_3_nick + ,operator_4_nick=excluded.operator_4_nick + ,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 +