add workflow 市场易API联系人,dev

This commit is contained in:
root 2025-11-03 09:52:18 +08:00
parent 6e4b23ef68
commit f6e85cb2df
21 changed files with 3227 additions and 6 deletions

View File

@ -0,0 +1,46 @@
DROP TABLE IF EXISTS p20_pdm.t01_scrm_leads;
CREATE TABLE IF NOT EXISTS p20_pdm.t01_scrm_leads (
customer_id varchar(30)
, date timestamp(0)
, target_name varchar(30)
, c_name varchar(30)
, c_type varchar(30)
, content_name varchar(30)
, source varchar(50)
, tag varchar(30)
, c_keyword varchar(30)
, attr2 varchar(30)
, label varchar(30)
, group_label varchar(30)
, 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( customer_id,date )
);
COMMENT ON COLUMN p20_pdm.t01_scrm_leads.customer_id IS 'customerId';
COMMENT ON COLUMN p20_pdm.t01_scrm_leads.date IS 'date';
COMMENT ON COLUMN p20_pdm.t01_scrm_leads.target_name IS 'targetName';
COMMENT ON COLUMN p20_pdm.t01_scrm_leads.c_name IS 'c_name';
COMMENT ON COLUMN p20_pdm.t01_scrm_leads.c_type IS 'c_type';
COMMENT ON COLUMN p20_pdm.t01_scrm_leads.content_name IS 'contentName';
COMMENT ON COLUMN p20_pdm.t01_scrm_leads.source IS 'source';
COMMENT ON COLUMN p20_pdm.t01_scrm_leads.tag IS 'tag';
COMMENT ON COLUMN p20_pdm.t01_scrm_leads.c_keyword IS 'c_keyword';
COMMENT ON COLUMN p20_pdm.t01_scrm_leads.attr2 IS 'attr2';
COMMENT ON COLUMN p20_pdm.t01_scrm_leads.label IS 'label';
COMMENT ON COLUMN p20_pdm.t01_scrm_leads.group_label IS 'groupLabel';
COMMENT ON COLUMN p20_pdm.t01_scrm_leads.Etl_Batch_No IS '作业批次号';
COMMENT ON COLUMN p20_pdm.t01_scrm_leads.Etl_First_Dt IS '最初入库时间';
COMMENT ON COLUMN p20_pdm.t01_scrm_leads.Etl_Job IS '作业名称';
COMMENT ON COLUMN p20_pdm.t01_scrm_leads.Etl_Proc_Dt IS '本次入库时间';
COMMENT ON COLUMN p20_pdm.t01_scrm_leads.Etl_Tx_Dt IS '作业运行时间';
COMMENT ON COLUMN p20_pdm.t01_scrm_leads.Src_Sysname IS '来源系统';
COMMENT ON COLUMN p20_pdm.t01_scrm_leads.Src_Table IS '来源表';
COMMENT ON TABLE p20_pdm.t01_scrm_leads IS 'SCRM线索';

View File

@ -0,0 +1,327 @@
/***************************************************************************************************/
/*script in Sql, generate by SdmCreateScript 2024(by IdgValue, qihang.feng@idgvalue.COM) */
/*VERSION 01.10 revised on 2020-08-25 */
/*Brilliance stems from wisdoms. */
/*************Head Section**************************************************************************/
/*Script Use: Periodically load data to :t01_scrm_leads(SCRM线索) */
/*Create Date:2025-10-30 11:07:00 */
/*SDM Developed By: dev */
/*SDM Developed Date: 2024-01-12 */
/*SDM Checked By: dev */
/*SDM Checked Date: 2025-10-30 */
/*Script Developed By: dev */
/*Script Checked By: dev */
/*Source table 1: :PDMDB.(SELECT
id,
connect_name,
item->>'fieldId' AS field_id,
item->>'fieldName' AS field_name,
item->>'fieldDisplayName' AS field_display_name,
item->>'value' AS value,
item->>'dataType' AS data_type
FROM p12_sfull.s98_s_api_contact_events,
jsonb_array_elements(properties::jsonb) AS item)*/
/*Source table 2: p10_sa.s98_s_api_contact_events */
/*Source table 3: p10_sa.s98_s_scrm_leads_af0912 */
/*Job Type: Inbound transform (Tier 1 to Tier 2) */
/*Target Table:t01_scrm_leads */
/*ETL Job Name:t01_scrm_leads */
/*ETL Frequency:Daily */
/*ETL Policy:F2 */
/********************************************************************************************/
/*******Main Section**************************************************************************/
\set ON_ERROR_STOP on
\set AUTOCOMMIT on
\timing on
/*创建临时表加载当前数据 */
CREATE TEMPORARY TABLE t01_scrm_leads_agi_CUR_I
( LIKE :PDMDB.t01_scrm_leads)
ON COMMIT PRESERVE ROWS;
/*创建临时表加载不同数据 */
CREATE TEMPORARY TABLE t01_scrm_leads_agi_INS
( LIKE :PDMDB.t01_scrm_leads)
ON COMMIT PRESERVE ROWS;
/*****************************************************************************************************/
/* GROUP 1:Source Table:s98_s_scrm_leads_af0912*******************************************************/
/*****************************************************************************************************/
INSERT INTO t01_scrm_leads_agi_CUR_I (
customer_id /*customerId*/
,date /*date*/
,target_name /*targetName*/
,c_name /*c_name*/
,c_type /*c_type*/
,content_name /*contentName*/
,source /*source*/
,tag /*tag*/
,c_keyword /*c_keyword*/
,attr2 /*attr2*/
,label /*label*/
,group_label /*groupLabel*/
,Etl_Batch_No /*作业批次号*/
,Etl_First_Dt /*最初入库时间*/
,Etl_Job /*作业名称*/
,Etl_Proc_Dt /*本次入库时间*/
,Etl_Tx_Dt /*作业运行时间*/
,Src_Sysname /*来源系统*/
,Src_Table /*来源表*/
)
SELECT
COALESCE(TRIM(CAST(p0.customer_id AS varchar(30))),'') /*customer_id*/
,COALESCE(TO_TIMESTAMP(CAST(p0.date AS VARCHAR(19)),'YYYY-MM-DD HH24:mi:ss'),TO_TIMESTAMP(:NULLDATE,'YYYYMMDD')) /*date*/
,COALESCE(TRIM(CAST(p0.target_name AS varchar(30))),'') /*target_name*/
,COALESCE(TRIM(CAST(p0.c_name AS varchar(30))),'') /*c_name*/
,COALESCE(TRIM(CAST(p0.c_type AS varchar(30))),'') /*c_type*/
,COALESCE(TRIM(CAST(p0.content_name AS varchar(30))),'') /*content_name*/
,COALESCE(TRIM(CAST(p0.source AS varchar(50))),'') /*source*/
,COALESCE(TRIM(CAST(p0.tag AS varchar(30))),'') /*tag*/
,COALESCE(TRIM(CAST(p0.c_keyword AS varchar(30))),'') /*c_keyword*/
,COALESCE(TRIM(CAST(p0.attr2 AS varchar(30))),'') /*attr2*/
,COALESCE(TRIM(CAST(p0.label AS varchar(30))),'') /*label*/
,COALESCE(TRIM(CAST(p0.group_label AS varchar(30))),'') /*group_label*/
,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_leads_af0912',1,3) /*Src_Sysname*/
,'s98_s_scrm_leads_af0912' /*Src_Table*/
FROM (select distinct on (customer_id ,"date") * from p10_sa.s98_s_scrm_leads_af0912 where 1=2) p0
;
/*****************************************************************************************************/
/* GROUP 2:Source Table:s98_s_api_contact_events******************************************************/
/*****************************************************************************************************/
INSERT INTO t01_scrm_leads_agi_CUR_I (
customer_id /*customerId*/
,date /*date*/
,target_name /*targetName*/
,c_name /*c_name*/
,c_type /*c_type*/
,content_name /*contentName*/
,source /*source*/
,tag /*tag*/
,c_keyword /*c_keyword*/
,attr2 /*attr2*/
,label /*label*/
,group_label /*groupLabel*/
,Etl_Batch_No /*作业批次号*/
,Etl_First_Dt /*最初入库时间*/
,Etl_Job /*作业名称*/
,Etl_Proc_Dt /*本次入库时间*/
,Etl_Tx_Dt /*作业运行时间*/
,Src_Sysname /*来源系统*/
,Src_Table /*来源表*/
)
SELECT
COALESCE(TRIM(CAST(p0.contact_id AS varchar(30))),'') /*customer_id*/
,TO_TIMESTAMP(substr(p0.at,1,23),'YYYY-MM-DD"T"HH24:MI:SS::MS') AT TIME ZONE 'PRC' /*date*/
,max(case when p1.connect_name = '泰克科技' and field_display_name='菜单按钮名称' then value
when p1.connect_name = '微站' and field_display_name='微站标题' then value
when p1.connect_name = '泰克科技企微' and field_display_name='员工姓名' then value
when p1.connect_name = '泰克科技服务号' and field_display_name='菜单按钮名称' then value
when p1.connect_name = '签到码' and field_display_name='关联表单名称' then value
when p1.connect_name = '系统-短信' and field_display_name='模版名称' then value
when p1.connect_name = '直播间' and field_display_name='页面标题' then value
end ) /*target_name*/
,p0.connect_name /*c_name*/
,'' /*c_type*/
,max(case when p1.connect_name = '泰克科技' and field_display_name='菜单按钮名称' then value
when p1.connect_name = '微站' and field_display_name='微站标题' then value
when p1.connect_name = '泰克科技企微' and field_display_name='员工姓名' then value
when p1.connect_name = '泰克科技服务号' and field_display_name='菜单按钮名称' then value
when p1.connect_name = '签到码' and field_display_name='关联表单名称' then value
when p1.connect_name = '系统-短信' and field_display_name='模版名称' then value
when p1.connect_name = '直播间' and field_display_name='页面标题' then value
end ) /*content_name*/
,p0.channel_name /*source*/
,'' /*tag*/
,'' /*c_keyword*/
,COALESCE(TRIM(CAST(p0.properties AS varchar(30))),'') /*attr2*/
,COALESCE(TRIM(CAST(p0.meta_remark AS varchar(30))),'') /*label*/
,COALESCE(TRIM(CAST(p0.meta_remark AS varchar(30))),'') /*group_label*/
,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_api_contact_events',1,3) /*Src_Sysname*/
,'s98_s_api_contact_events' /*Src_Table*/
FROM p10_sa.s98_s_api_contact_events p0
LEFT JOIN ((SELECT
id,
connect_name,
item->>'fieldId' AS field_id,
item->>'fieldName' AS field_name,
item->>'fieldDisplayName' AS field_display_name,
item->>'value' AS value,
item->>'dataType' AS data_type
FROM p12_sfull.s98_s_api_contact_events,
jsonb_array_elements(properties::jsonb) AS item)) p1
ON p1.id=p0.id
group by p0 .contact_id ,p0 .properties ,p0.at,p0 .connect_name,p0 .meta_remark ,p0 .channel_name
;
/*将不同数据插入到临时表 */
;INSERT INTO t01_scrm_leads_agi_INS (
target_name /*targetName*/
,c_name /*c_name*/
,c_type /*c_type*/
,content_name /*contentName*/
,source /*source*/
,tag /*tag*/
,c_keyword /*c_keyword*/
,attr2 /*attr2*/
,group_label /*groupLabel*/
,customer_id /*customerId*/
,date /*date*/
,label /*label*/
,Etl_Batch_No /*作业批次号*/
,Etl_First_Dt /*最初入库时间*/
,Etl_Job /*作业名称*/
,Etl_Proc_Dt /*本次入库时间*/
,Etl_Tx_Dt /*作业运行时间*/
,Src_Sysname /*来源系统*/
,Src_Table /*来源表*/
)
SELECT
P1.target_name /*targetName*/
,P1.c_name /*c_name*/
,P1.c_type /*c_type*/
,P1.content_name /*contentName*/
,P1.source /*source*/
,P1.tag /*tag*/
,P1.c_keyword /*c_keyword*/
,P1.attr2 /*attr2*/
,P1.group_label /*groupLabel*/
,P1.customer_id /*customerId*/
,P1.date /*date*/
,P1.label /*label*/
,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_leads_agi_CUR_I P1
LEFT JOIN :PDMDB.t01_scrm_leads P2
ON P1.target_name = P2.target_name
AND P1.c_name = P2.c_name
AND P1.c_type = P2.c_type
AND P1.content_name = P2.content_name
AND P1.source = P2.source
AND P1.tag = P2.tag
AND P1.c_keyword = P2.c_keyword
AND P1.attr2 = P2.attr2
AND P1.group_label = P2.group_label
AND P1.customer_id = P2.customer_id
AND P1.date = P2.date
AND P1.label = P2.label
WHERE P2.target_name IS NULL
OR P2.c_name IS NULL
OR P2.c_type IS NULL
OR P2.content_name IS NULL
OR P2.source IS NULL
OR P2.tag IS NULL
OR P2.c_keyword IS NULL
OR P2.attr2 IS NULL
OR P2.group_label IS NULL
OR P2.customer_id IS NULL
OR P2.date IS NULL
OR P2.label IS NULL
;
/*将新增数据插入到目标表 */
;INSERT INTO :PDMDB.t01_scrm_leads (
target_name /*targetName*/
,c_name /*c_name*/
,c_type /*c_type*/
,content_name /*contentName*/
,source /*source*/
,tag /*tag*/
,c_keyword /*c_keyword*/
,attr2 /*attr2*/
,group_label /*groupLabel*/
,customer_id /*customerId*/
,date /*date*/
,label /*label*/
,Etl_Batch_No /*作业批次号*/
,Etl_First_Dt /*最初入库时间*/
,Etl_Job /*作业名称*/
,Etl_Proc_Dt /*本次入库时间*/
,Etl_Tx_Dt /*作业运行时间*/
,Src_Sysname /*来源系统*/
,Src_Table /*来源表*/
)
SELECT
P1.target_name /*targetName*/
,P1.c_name /*c_name*/
,P1.c_type /*c_type*/
,P1.content_name /*contentName*/
,P1.source /*source*/
,P1.tag /*tag*/
,P1.c_keyword /*c_keyword*/
,P1.attr2 /*attr2*/
,P1.group_label /*groupLabel*/
,P1.customer_id /*customerId*/
,P1.date /*date*/
,P1.label /*label*/
,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_leads_agi_INS P1
ON CONFLICT ( customer_id,date,label)
DO UPDATE SET
customer_id=excluded.customer_id
,date=excluded.date
,label=excluded.label
,target_name=excluded.target_name
,c_name=excluded.c_name
,c_type=excluded.c_type
,content_name=excluded.content_name
,source=excluded.source
,tag=excluded.tag
,c_keyword=excluded.c_keyword
,attr2=excluded.attr2
,group_label=excluded.group_label
,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

View File

@ -0,0 +1,50 @@
DROP TABLE IF EXISTS p30_common.d_scrm_contact;
CREATE TABLE IF NOT EXISTS p30_common.d_scrm_contact (
scrm_leads_id VARCHAR(20)
, city_name VARCHAR(20)
, company_name VARCHAR(50)
, email VARCHAR(50)
, email_data_ind char(1)
, email_availability char(1)
, mobile_phone VARCHAR(20)
, mobile_phone_data_ind char(1)
, mobile_phone_availability char(1)
, full_name VARCHAR(20)
, prov_name VARCHAR(20)
, create_time timestamp(0)
, wechat_id VARCHAR(100)
, update_time timestamp(0)
, 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 p30_common.d_scrm_contact.scrm_leads_id IS 'SCRM线索ID';
COMMENT ON COLUMN p30_common.d_scrm_contact.city_name IS '城市';
COMMENT ON COLUMN p30_common.d_scrm_contact.company_name IS '公司';
COMMENT ON COLUMN p30_common.d_scrm_contact.email IS '邮箱';
COMMENT ON COLUMN p30_common.d_scrm_contact.email_data_ind IS '邮箱数据标志';
COMMENT ON COLUMN p30_common.d_scrm_contact.email_availability IS '邮箱有效性';
COMMENT ON COLUMN p30_common.d_scrm_contact.mobile_phone IS '手机号码';
COMMENT ON COLUMN p30_common.d_scrm_contact.mobile_phone_data_ind IS '手机号数据标志';
COMMENT ON COLUMN p30_common.d_scrm_contact.mobile_phone_availability IS '手机号数据有效性';
COMMENT ON COLUMN p30_common.d_scrm_contact.full_name IS '姓名';
COMMENT ON COLUMN p30_common.d_scrm_contact.prov_name IS '省份';
COMMENT ON COLUMN p30_common.d_scrm_contact.create_time IS '创建时间';
COMMENT ON COLUMN p30_common.d_scrm_contact.wechat_id IS '身份-企业微信外部联系人';
COMMENT ON COLUMN p30_common.d_scrm_contact.update_time IS '更新时间';
COMMENT ON COLUMN p30_common.d_scrm_contact.Etl_Batch_No IS '作业批次号';
COMMENT ON COLUMN p30_common.d_scrm_contact.Etl_First_Dt IS '最初入库时间';
COMMENT ON COLUMN p30_common.d_scrm_contact.Etl_Job IS '作业名称';
COMMENT ON COLUMN p30_common.d_scrm_contact.Etl_Proc_Dt IS '本次入库时间';
COMMENT ON COLUMN p30_common.d_scrm_contact.Etl_Tx_Dt IS '作业运行时间';
COMMENT ON COLUMN p30_common.d_scrm_contact.Src_Sysname IS '来源系统';
COMMENT ON COLUMN p30_common.d_scrm_contact.Src_Table IS '来源表';
COMMENT ON TABLE p30_common.d_scrm_contact IS 'SCRM联系方式';

View File

@ -0,0 +1,323 @@
/***************************************************************************************************/
/*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_scrm_contact(SCRM联系方式) */
/*Create Date:2024-06-06 15:01:23 */
/*SDM Developed By: dev */
/*SDM Developed Date: 2024-01-18 */
/*SDM Checked By: dev */
/*SDM Checked Date: 2024-06-06 */
/*Script Developed By: dev */
/*Script Checked By: dev */
/*Source table 1: :PDMDB.t01_scrm_contact_merge */
/*Source table 2: :SADB.select distinct on (scrm_leads_id) * from p20_pdm.t01_scrm_contact_update tscu
order by scrm_leads_id,update_time desc*/
/*Source table 3: p20_pdm.t01_scrm_contact */
/*Source table 4: :PDMDB.t01_scrm_contact_his */
/*Job Type: Inbound transform (Tier 1 to Tier 2) */
/*Target Table:d_scrm_contact */
/*ETL Job Name:d_scrm_contact */
/*ETL Frequency:Daily */
/*ETL Policy:F2 */
/********************************************************************************************/
/*******Main Section**************************************************************************/
\set ON_ERROR_STOP on
\set AUTOCOMMIT on
\timing on
/*创建临时表加载当前数据 */
CREATE TEMPORARY TABLE d_scrm_contact_agi_CUR_I
( LIKE :COMMDB.d_scrm_contact)
ON COMMIT PRESERVE ROWS;
/*创建临时表加载不同数据 */
CREATE TEMPORARY TABLE d_scrm_contact_agi_INS
( LIKE :COMMDB.d_scrm_contact)
ON COMMIT PRESERVE ROWS;
/*****************************************************************************************************/
/* GROUP 1:Source Table:t01_scrm_contact**************************************************************/
/*****************************************************************************************************/
INSERT INTO d_scrm_contact_agi_CUR_I (
scrm_leads_id /*SCRM线索ID*/
,city_name /*城市*/
,company_name /*公司*/
,email /*邮箱*/
,email_data_ind /*邮箱数据标志*/
,email_availability /*邮箱有效性*/
,mobile_phone /*手机号码*/
,mobile_phone_data_ind /*手机号数据标志*/
,mobile_phone_availability /*手机号数据有效性*/
,full_name /*姓名*/
,prov_name /*省份*/
,create_time /*创建时间*/
,wechat_id /*身份-企业微信外部联系人*/
,update_time /*更新时间*/
,Etl_Batch_No /*作业批次号*/
,Etl_First_Dt /*最初入库时间*/
,Etl_Job /*作业名称*/
,Etl_Proc_Dt /*本次入库时间*/
,Etl_Tx_Dt /*作业运行时间*/
,Src_Sysname /*来源系统*/
,Src_Table /*来源表*/
)
SELECT
COALESCE(TRIM(p0.scrm_leads_id),'') /*scrm_leads_id*/
,COALESCE(TRIM(p0.city_name),'') /*city_name*/
,COALESCE(TRIM(p0.company_name),'') /*company_name*/
,COALESCE(TRIM(p0.email),'') /*email*/
,case when length(p0.email)>1 then '1' else 0 end /*email_data_ind*/
,case when p0.email ~ '[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$' and length(p0.email)>10 then '1'
else '0' end /*email_availability*/
,replace(p0.mobile_number,'.0','') /*mobile_phone*/
,case when length(replace(p0.mobile_number,'.0',''))>1 then '1' else 0 end /*mobile_phone_data_ind*/
,case when replace(p0.mobile_number,'.0','') ~ '^1[3-9]\d{9}$' then '1'
else '0' end /*mobile_phone_availability*/
,COALESCE(TRIM(p0.full_name),'') /*full_name*/
,COALESCE(TRIM(p0.prov_name),'') /*prov_name*/
,COALESCE(p0.create_time,TO_TIMESTAMP(:NULLDATE,'YYYYMMDD')) /*create_time*/
,'' /*wechat_id*/
,COALESCE(p0.update_time,TO_TIMESTAMP(:NULLDATE,'YYYYMMDD')) /*update_time*/
,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('t01_scrm_contact',1,3) /*Src_Sysname*/
,'t01_scrm_contact' /*Src_Table*/
FROM p20_pdm.t01_scrm_contact p0
LEFT JOIN :PDMDB.t01_scrm_contact_merge p1
ON p0.scrm_leads_id =p1.merged_leads_id
where p1.scrm_leads_id is null
;
/*****************************************************************************************************/
/* GROUP 2:Source Table:t01_scrm_contact_his**********************************************************/
/*****************************************************************************************************/
INSERT INTO d_scrm_contact_agi_CUR_I (
scrm_leads_id /*SCRM线索ID*/
,city_name /*城市*/
,company_name /*公司*/
,email /*邮箱*/
,email_data_ind /*邮箱数据标志*/
,email_availability /*邮箱有效性*/
,mobile_phone /*手机号码*/
,mobile_phone_data_ind /*手机号数据标志*/
,mobile_phone_availability /*手机号数据有效性*/
,full_name /*姓名*/
,prov_name /*省份*/
,create_time /*创建时间*/
,wechat_id /*身份-企业微信外部联系人*/
,update_time /*更新时间*/
,Etl_Batch_No /*作业批次号*/
,Etl_First_Dt /*最初入库时间*/
,Etl_Job /*作业名称*/
,Etl_Proc_Dt /*本次入库时间*/
,Etl_Tx_Dt /*作业运行时间*/
,Src_Sysname /*来源系统*/
,Src_Table /*来源表*/
)
SELECT
COALESCE(TRIM(p0.scrm_leads_id),'') /*scrm_leads_id*/
,coalesce(p1.city_name,p0.city_name) /*city_name*/
,coalesce(p1.company_name,p0.company_name) /*company_name*/
,coalesce(p1.email,p0.email) /*email*/
,case when length(coalesce(p1.email,p0.email))>1 then '1' else 0 end /*email_data_ind*/
,case when coalesce(p1.email,p0.email) ~ '[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$' and length(coalesce(p1.email,p0.email))>10 then '1'
else '0' end /*email_availability*/
,coalesce(p1.mobile_number,p0.mobile_number,'') /*mobile_phone*/
,case when length(coalesce(p1.mobile_number,p0.mobile_number))>1 then '1' else 0 end /*mobile_phone_data_ind*/
,case when coalesce(p1.mobile_number,p0.mobile_number) ~ '^1[3-9]\d{9}$' then '1'
else '0' end /*mobile_phone_availability*/
,coalesce(p1.full_name,p0.full_name,'') /*full_name*/
,coalesce(p1.prov_name,p0.prov_name) /*prov_name*/
,COALESCE(p0.create_time,TO_TIMESTAMP(:NULLDATE,'YYYYMMDD')) /*create_time*/
,coalesce(p1.wechat_id,p0.wechat_id) /*wechat_id*/
,COALESCE(p0.last_update_time,TO_TIMESTAMP(:NULLDATE,'YYYYMMDD')) /*update_time*/
,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('t01_scrm_contact_his',1,3) /*Src_Sysname*/
,'t01_scrm_contact_his' /*Src_Table*/
FROM :PDMDB.t01_scrm_contact_his p0
LEFT JOIN (select distinct on (scrm_leads_id) * from p20_pdm.t01_scrm_contact_update tscu
order by scrm_leads_id,update_time desc) p1
ON p0 .scrm_leads_id =p1 .scrm_leads_id
;
/*将不同数据插入到临时表 */
;INSERT INTO d_scrm_contact_agi_INS (
city_name /*城市*/
,company_name /*公司*/
,email /*邮箱*/
,email_data_ind /*邮箱数据标志*/
,email_availability /*邮箱有效性*/
,mobile_phone /*手机号码*/
,mobile_phone_data_ind /*手机号数据标志*/
,mobile_phone_availability /*手机号数据有效性*/
,full_name /*姓名*/
,prov_name /*省份*/
,create_time /*创建时间*/
,wechat_id /*身份-企业微信外部联系人*/
,update_time /*更新时间*/
,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.city_name /*城市*/
,P1.company_name /*公司*/
,P1.email /*邮箱*/
,P1.email_data_ind /*邮箱数据标志*/
,P1.email_availability /*邮箱有效性*/
,P1.mobile_phone /*手机号码*/
,P1.mobile_phone_data_ind /*手机号数据标志*/
,P1.mobile_phone_availability /*手机号数据有效性*/
,P1.full_name /*姓名*/
,P1.prov_name /*省份*/
,P1.create_time /*创建时间*/
,P1.wechat_id /*身份-企业微信外部联系人*/
,P1.update_time /*更新时间*/
,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 d_scrm_contact_agi_CUR_I P1
LEFT JOIN :COMMDB.d_scrm_contact P2
ON P1.city_name = P2.city_name
AND P1.company_name = P2.company_name
AND P1.email = P2.email
AND P1.email_data_ind = P2.email_data_ind
AND P1.email_availability = P2.email_availability
AND P1.mobile_phone = P2.mobile_phone
AND P1.mobile_phone_data_ind = P2.mobile_phone_data_ind
AND P1.mobile_phone_availability = P2.mobile_phone_availability
AND P1.full_name = P2.full_name
AND P1.prov_name = P2.prov_name
AND P1.create_time = P2.create_time
AND P1.wechat_id = P2.wechat_id
AND P1.update_time = P2.update_time
AND P1.scrm_leads_id = P2.scrm_leads_id
WHERE P2.city_name IS NULL
OR P2.company_name IS NULL
OR P2.email IS NULL
OR P2.email_data_ind IS NULL
OR P2.email_availability IS NULL
OR P2.mobile_phone IS NULL
OR P2.mobile_phone_data_ind IS NULL
OR P2.mobile_phone_availability IS NULL
OR P2.full_name IS NULL
OR P2.prov_name IS NULL
OR P2.create_time IS NULL
OR P2.wechat_id IS NULL
OR P2.update_time IS NULL
OR P2.scrm_leads_id IS NULL
;
/*将新增数据插入到目标表 */
;INSERT INTO :COMMDB.d_scrm_contact (
city_name /*城市*/
,company_name /*公司*/
,email /*邮箱*/
,email_data_ind /*邮箱数据标志*/
,email_availability /*邮箱有效性*/
,mobile_phone /*手机号码*/
,mobile_phone_data_ind /*手机号数据标志*/
,mobile_phone_availability /*手机号数据有效性*/
,full_name /*姓名*/
,prov_name /*省份*/
,create_time /*创建时间*/
,wechat_id /*身份-企业微信外部联系人*/
,update_time /*更新时间*/
,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.city_name /*城市*/
,P1.company_name /*公司*/
,P1.email /*邮箱*/
,P1.email_data_ind /*邮箱数据标志*/
,P1.email_availability /*邮箱有效性*/
,P1.mobile_phone /*手机号码*/
,P1.mobile_phone_data_ind /*手机号数据标志*/
,P1.mobile_phone_availability /*手机号数据有效性*/
,P1.full_name /*姓名*/
,P1.prov_name /*省份*/
,P1.create_time /*创建时间*/
,P1.wechat_id /*身份-企业微信外部联系人*/
,P1.update_time /*更新时间*/
,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 d_scrm_contact_agi_INS P1
ON CONFLICT ( scrm_leads_id)
DO UPDATE SET
scrm_leads_id=excluded.scrm_leads_id
,city_name=excluded.city_name
,company_name=excluded.company_name
,email=excluded.email
,email_data_ind=excluded.email_data_ind
,email_availability=excluded.email_availability
,mobile_phone=excluded.mobile_phone
,mobile_phone_data_ind=excluded.mobile_phone_data_ind
,mobile_phone_availability=excluded.mobile_phone_availability
,full_name=excluded.full_name
,prov_name=excluded.prov_name
,create_time=excluded.create_time
,wechat_id=excluded.wechat_id
,update_time=excluded.update_time
,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

View File

@ -0,0 +1,52 @@
DROP TABLE IF EXISTS p20_pdm.t01_scrm_contact;
CREATE TABLE IF NOT EXISTS p20_pdm.t01_scrm_contact (
scrm_leads_id VARCHAR(20)
, city_name VARCHAR(20)
, company_name VARCHAR(50)
, industry VARCHAR(100)
, department VARCHAR(50)
, district VARCHAR(50)
, address_detail VARCHAR(100)
, email VARCHAR(50)
, mobile_number VARCHAR(20)
, full_name VARCHAR(20)
, nick_name VARCHAR(20)
, prov_name VARCHAR(20)
, create_time timestamp(0)
, wechat_id VARCHAR(100)
, update_time timestamp(0)
, 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.scrm_leads_id IS 'SCRM线索ID';
COMMENT ON COLUMN p20_pdm.t01_scrm_contact.city_name IS '城市';
COMMENT ON COLUMN p20_pdm.t01_scrm_contact.company_name IS '公司';
COMMENT ON COLUMN p20_pdm.t01_scrm_contact.industry IS '行业';
COMMENT ON COLUMN p20_pdm.t01_scrm_contact.department IS '部门';
COMMENT ON COLUMN p20_pdm.t01_scrm_contact.district IS '';
COMMENT ON COLUMN p20_pdm.t01_scrm_contact.address_detail IS '详细地址';
COMMENT ON COLUMN p20_pdm.t01_scrm_contact.email IS '邮箱';
COMMENT ON COLUMN p20_pdm.t01_scrm_contact.mobile_number IS '手机号码';
COMMENT ON COLUMN p20_pdm.t01_scrm_contact.full_name IS '姓名';
COMMENT ON COLUMN p20_pdm.t01_scrm_contact.nick_name IS '昵称';
COMMENT ON COLUMN p20_pdm.t01_scrm_contact.prov_name IS '省份';
COMMENT ON COLUMN p20_pdm.t01_scrm_contact.create_time IS '创建时间';
COMMENT ON COLUMN p20_pdm.t01_scrm_contact.wechat_id IS '身份-企业微信外部联系人';
COMMENT ON COLUMN p20_pdm.t01_scrm_contact.update_time IS '更新时间';
COMMENT ON COLUMN p20_pdm.t01_scrm_contact.etl_batch_no IS '作业批次号';
COMMENT ON COLUMN p20_pdm.t01_scrm_contact.etl_first_dt IS '最初入库时间';
COMMENT ON COLUMN p20_pdm.t01_scrm_contact.etl_job IS '作业名称';
COMMENT ON COLUMN p20_pdm.t01_scrm_contact.etl_proc_dt IS '本次入库时间';
COMMENT ON COLUMN p20_pdm.t01_scrm_contact.etl_tx_dt IS '作业运行时间';
COMMENT ON COLUMN p20_pdm.t01_scrm_contact.src_sysname IS '来源系统';
COMMENT ON COLUMN p20_pdm.t01_scrm_contact.src_table IS '来源表';
COMMENT ON TABLE p20_pdm.t01_scrm_contact IS 'SCRM联系方式';

View File

@ -0,0 +1,271 @@
/***************************************************************************************************/
/*script in Sql, generate by SdmCreateScript 2024(by IdgValue, qihang.feng@idgvalue.COM) */
/*VERSION 01.10 revised on 2020-08-25 */
/*Brilliance stems from wisdoms. */
/*************Head Section**************************************************************************/
/*Script Use: Periodically load data to :t01_scrm_contact(SCRM联系方式) */
/*Create Date:2025-10-21 16:45:00 */
/*SDM Developed By: dev */
/*SDM Developed Date: 2025-10-21 */
/*SDM Checked By: dev */
/*SDM Checked Date: 2025-10-21 */
/*Script Developed By: dev */
/*Script Checked By: dev */
/*Source table 1: p10_sa.s98_s_api_contact_update_info */
/*Job Type: Inbound transform (Tier 1 to Tier 2) */
/*Target Table:t01_scrm_contact */
/*ETL Job Name:t01_scrm_contact */
/*ETL Frequency:None */
/*ETL Policy:F2 */
/********************************************************************************************/
/*******Main Section**************************************************************************/
\set ON_ERROR_STOP on
\set AUTOCOMMIT on
\timing on
/*创建临时表加载当前数据 */
CREATE TEMPORARY TABLE t01_scrm_contact_agi_CUR_I
( LIKE :PDMDB.t01_scrm_contact)
ON COMMIT PRESERVE ROWS;
/*创建临时表加载不同数据 */
CREATE TEMPORARY TABLE t01_scrm_contact_agi_INS
( LIKE :PDMDB.t01_scrm_contact)
ON COMMIT PRESERVE ROWS;
/*****************************************************************************************************/
/* GROUP 1:Source Table:s98_s_api_contact_update_info*************************************************/
/*****************************************************************************************************/
INSERT INTO t01_scrm_contact_agi_CUR_I (
scrm_leads_id /*SCRM线索ID*/
,city_name /*城市*/
,company_name /*公司*/
,industry /*行业*/
,department /*部门*/
,job_title /*职位*/
,district /**/
,address_detail /*详细地址*/
,email /*邮箱*/
,mobile_number /*手机号码*/
,full_name /*姓名*/
,nick_name /*昵称*/
,prov_name /*省份*/
,create_time /*创建时间*/
,wechat_id /*身份-企业微信外部联系人*/
,update_time /*更新时间*/
,etl_batch_no /*作业批次号*/
,etl_first_dt /*最初入库时间*/
,etl_job /*作业名称*/
,etl_proc_dt /*本次入库时间*/
,etl_tx_dt /*作业运行时间*/
,src_sysname /*来源系统*/
,src_table /*来源表*/
)
SELECT
COALESCE(TRIM(CAST(p0.id AS VARCHAR(20))),'') /*scrm_leads_id*/
,coalesce(p0.properties::json ->> 'City','') /*city_name*/
,coalesce(p0.properties::json ->> 'Organization','') /*company_name*/
,coalesce(p0.properties::json ->> 'Industry','') /*industry*/
,coalesce(p0.properties::json ->> 'Department','') /*department*/
,coalesce(p0.properties::json ->> 'Position','') /*job_title*/
,coalesce(p0.properties::json ->> 'District','') /*district*/
,coalesce(p0.properties::json ->> 'Detail','') /*address_detail*/
,coalesce(p0.properties::json ->> 'Mailbox','') /*email*/
,coalesce(p0.properties::json ->> 'Phone','') /*mobile_number*/
,coalesce(p0.properties::json ->> 'FullName','') /*full_name*/
,coalesce(p0.properties::json ->> 'NickName','') /*nick_name*/
,coalesce(p0.properties::json ->> 'Province','') /*prov_name*/
,TO_TIMESTAMP(substr(p0.properties::json ->> 'CreatedAt',1,19),'YYYY-MM-DD"T"HH24:MI:SS') AT TIME ZONE 'PRC' /*create_time*/
,'' /*wechat_id*/
,TO_TIMESTAMP(substr(p0.properties::json ->> 'UpdatedAt',1,19),'YYYY-MM-DD"T"HH24:MI:SS') AT TIME ZONE 'PRC' /*update_time*/
,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_api_contact_update_info',1,3) /*src_sysname*/
,'s98_s_api_contact_update_info' /*src_table*/
FROM p10_sa.s98_s_api_contact_update_info p0
;
/*将不同数据插入到临时表 */
;INSERT INTO t01_scrm_contact_agi_INS (
city_name /*城市*/
,company_name /*公司*/
,industry /*行业*/
,department /*部门*/
,job_title /*职位*/
,district /**/
,address_detail /*详细地址*/
,email /*邮箱*/
,mobile_number /*手机号码*/
,full_name /*姓名*/
,nick_name /*昵称*/
,prov_name /*省份*/
,create_time /*创建时间*/
,wechat_id /*身份-企业微信外部联系人*/
,update_time /*更新时间*/
,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.city_name /*城市*/
,P1.company_name /*公司*/
,P1.industry /*行业*/
,P1.department /*部门*/
,P1.job_title /*职位*/
,P1.district /**/
,P1.address_detail /*详细地址*/
,P1.email /*邮箱*/
,P1.mobile_number /*手机号码*/
,P1.full_name /*姓名*/
,P1.nick_name /*昵称*/
,P1.prov_name /*省份*/
,P1.create_time /*创建时间*/
,P1.wechat_id /*身份-企业微信外部联系人*/
,P1.update_time /*更新时间*/
,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_agi_CUR_I P1
LEFT JOIN :PDMDB.t01_scrm_contact P2
ON P1.city_name = P2.city_name
AND P1.company_name = P2.company_name
AND P1.industry = P2.industry
AND P1.department = P2.department
AND P1.job_title = P2.job_title
AND P1.district = P2.district
AND P1.address_detail = P2.address_detail
AND P1.email = P2.email
AND P1.mobile_number = P2.mobile_number
AND P1.full_name = P2.full_name
AND P1.nick_name = P2.nick_name
AND P1.prov_name = P2.prov_name
AND P1.create_time = P2.create_time
AND P1.wechat_id = P2.wechat_id
AND P1.update_time = P2.update_time
AND P1.scrm_leads_id = P2.scrm_leads_id
WHERE P2.city_name IS NULL
OR P2.company_name IS NULL
OR P2.industry IS NULL
OR P2.department IS NULL
OR P2.job_title IS NULL
OR P2.district IS NULL
OR P2.address_detail IS NULL
OR P2.email IS NULL
OR P2.mobile_number IS NULL
OR P2.full_name IS NULL
OR P2.nick_name IS NULL
OR P2.prov_name IS NULL
OR P2.create_time IS NULL
OR P2.wechat_id IS NULL
OR P2.update_time IS NULL
OR P2.scrm_leads_id IS NULL
;
/*将新增数据插入到目标表 */
;INSERT INTO :PDMDB.t01_scrm_contact (
city_name /*城市*/
,company_name /*公司*/
,industry /*行业*/
,department /*部门*/
,job_title /*职位*/
,district /**/
,address_detail /*详细地址*/
,email /*邮箱*/
,mobile_number /*手机号码*/
,full_name /*姓名*/
,nick_name /*昵称*/
,prov_name /*省份*/
,create_time /*创建时间*/
,wechat_id /*身份-企业微信外部联系人*/
,update_time /*更新时间*/
,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.city_name /*城市*/
,P1.company_name /*公司*/
,P1.industry /*行业*/
,P1.department /*部门*/
,P1.job_title /*职位*/
,P1.district /**/
,P1.address_detail /*详细地址*/
,P1.email /*邮箱*/
,P1.mobile_number /*手机号码*/
,P1.full_name /*姓名*/
,P1.nick_name /*昵称*/
,P1.prov_name /*省份*/
,P1.create_time /*创建时间*/
,P1.wechat_id /*身份-企业微信外部联系人*/
,P1.update_time /*更新时间*/
,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_agi_INS P1
ON CONFLICT ( scrm_leads_id)
DO UPDATE SET
scrm_leads_id=excluded.scrm_leads_id
,city_name=excluded.city_name
,company_name=excluded.company_name
,industry=excluded.industry
,department=excluded.department
,job_title=excluded.job_title
,district=excluded.district
,address_detail=excluded.address_detail
,email=excluded.email
,mobile_number=excluded.mobile_number
,full_name=excluded.full_name
,nick_name=excluded.nick_name
,prov_name=excluded.prov_name
,create_time=excluded.create_time
,wechat_id=excluded.wechat_id
,update_time=excluded.update_time
,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

View File

@ -0,0 +1,52 @@
DROP TABLE IF EXISTS p60_mart.cust_all_info;
CREATE TABLE IF NOT EXISTS p60_mart.cust_all_info (
contact_id text
, contact text
, contact_channel text
, full_name text
, mobile VARCHAR(0)
, email VARCHAR(0)
, wechat VARCHAR(0)
, company VARCHAR(0)
, account text
, country VARCHAR(0)
, prov_name VARCHAR(0)
, city_name VARCHAR(0)
, industry VARCHAR(50)
, ccp_value VARCHAR(0)
, mobile_phone_date_ind text
, mobile_phone_availability text
, email_data_ind text
, email_availability text
, crm_active_time timestamp(0)
, scrm_active_time timestamp(0)
, livechat_active_time timestamp(0)
, last_activate_time timestamp(0)
);
COMMENT ON COLUMN p60_mart.cust_all_info.contact_id IS '';
COMMENT ON COLUMN p60_mart.cust_all_info.contact IS '';
COMMENT ON COLUMN p60_mart.cust_all_info.contact_channel IS '';
COMMENT ON COLUMN p60_mart.cust_all_info.full_name IS '';
COMMENT ON COLUMN p60_mart.cust_all_info.mobile IS '';
COMMENT ON COLUMN p60_mart.cust_all_info.email IS '';
COMMENT ON COLUMN p60_mart.cust_all_info.wechat IS '';
COMMENT ON COLUMN p60_mart.cust_all_info.company IS '';
COMMENT ON COLUMN p60_mart.cust_all_info.account IS '';
COMMENT ON COLUMN p60_mart.cust_all_info.country IS '';
COMMENT ON COLUMN p60_mart.cust_all_info.prov_name IS '';
COMMENT ON COLUMN p60_mart.cust_all_info.city_name IS '';
COMMENT ON COLUMN p60_mart.cust_all_info.industry IS '';
COMMENT ON COLUMN p60_mart.cust_all_info.ccp_value IS '';
COMMENT ON COLUMN p60_mart.cust_all_info.mobile_phone_date_ind IS '';
COMMENT ON COLUMN p60_mart.cust_all_info.mobile_phone_availability IS '';
COMMENT ON COLUMN p60_mart.cust_all_info.email_data_ind IS '';
COMMENT ON COLUMN p60_mart.cust_all_info.email_availability IS '';
COMMENT ON COLUMN p60_mart.cust_all_info.crm_active_time IS '';
COMMENT ON COLUMN p60_mart.cust_all_info.scrm_active_time IS '';
COMMENT ON COLUMN p60_mart.cust_all_info.livechat_active_time IS '';
COMMENT ON COLUMN p60_mart.cust_all_info.last_activate_time IS '';
COMMENT ON TABLE p60_mart.cust_all_info IS '';

View File

@ -0,0 +1,224 @@
/***************************************************************************************************/
/*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_all_info(客户信息) */
/*Create Date:2024-05-13 14:57:41 */
/*SDM Developed By: dev */
/*SDM Developed Date: 2024-01-19 */
/*SDM Checked By: dev */
/*SDM Checked Date: 2024-05-13 */
/*Script Developed By: dev */
/*Script Checked By: dev */
/*Source table 1: :COMMDB.d_crm_contact */
/*Source table 2: p30_common.cust_contact_info */
/*Source table 3: :COMMDB.d_livechat_contact */
/*Source table 4: :COMMDB.d_scrm_contact */
/*Source table 5: :COMMDB.v_cust_active */
/*Job Type: Inbound transform (Tier 1 to Tier 2) */
/*Target Table:cust_all_info */
/*ETL Job Name:cust_all_info */
/*ETL Frequency:Daily */
/*ETL Policy:F1 */
/********************************************************************************************/
/*******Main Section**************************************************************************/
\set ON_ERROR_STOP on
\set AUTOCOMMIT on
\timing on
/*创建临时表加载当前数据 */
CREATE TEMPORARY TABLE cust_all_info_agi_CUR_I
( LIKE :MARTDB.cust_all_info)
ON COMMIT PRESERVE ROWS;
/*****************************************************************************************************/
/* GROUP 1:Source Table:cust_contact_info*************************************************************/
/*****************************************************************************************************/
INSERT INTO cust_all_info_agi_CUR_I (
contact_id /*联系编号*/
,contact /*联系方式*/
,contact_channel /*联系渠道*/
,full_name /*姓名*/
,mobile /*手机号*/
,email /*邮箱*/
,wechat /*微信*/
,company /*公司*/
,account /*账户*/
,country /*国家*/
,prov_name /*省份*/
,city_name /*城市*/
,industry /*行业*/
,mobile_phone_data_ind /*手机号是否有数据*/
,mobile_phone_availability /*手机号是否合规*/
,email_data_ind /*邮箱是否有数据*/
,email_availability /*邮箱是否合规*/
,crm_active_time /*CRM系统活跃时间*/
,scrm_active_time /*SCRM系统活跃时间*/
,livechat_active_time /*Livechat系统活跃时间*/
,last_activate_time /*最后活跃时间*/
,udesk_active_time /*Udesk系统活跃时间*/
,crm_create_time /*CRM创建时间*/
,scrm_create_time /*SCRM创建时间*/
,livechat_create_time /*Livechat创建时间*/
,lease_create_time /*最早创建时间*/
,src_sysname /*来源系统*/
,src_table /*来源表*/
,etl_job /*作业名称*/
,etl_first_dt /*最初入库时间*/
,etl_proc_dt /*本次入库时间*/
,etl_tx_dt /*作业运行时间*/
,etl_batch_no /*作业批次号*/
)
SELECT
p1.contact_id /*contact_id*/
,p1.contact /*contact*/
,p1.contact_channel /*contact_channel*/
,p1.full_name /*full_name*/
,p1.mobile /*mobile*/
,p1.email /*email*/
,p1.wechat /*wechat*/
,p1.company /*company*/
,p1.account /*account*/
,p1.country /*country*/
,p1.prov_name /*prov_name*/
,p1.city_name /*city_name*/
,COALESCE(p1.industry,'') /*industry*/
,coalesce(p2.mobile_phone_data_ind::text,p3.mobile_phone_data_ind::text,p4.mobile_phone_data_ind::text,'0') /*mobile_phone_data_ind*/
,coalesce(p2.mobile_phone_availability, p3.mobile_phone_availability,p4.mobile_phone_availability,'0') /*mobile_phone_availability*/
,coalesce(p2.email_data_ind::text,p3.email_data_ind::text,p4.email_data_ind::text,'0') /*email_data_ind*/
,coalesce(p2.email_availability , p3.email_availability,p4.email_availability,'0') /*email_availability*/
,coalesce(p5.active_time,'1900-01-01') /*crm_active_time*/
,coalesce(p6.active_time,'1900-01-01') /*scrm_active_time*/
,coalesce(p7.active_time,'1900-01-01') /*livechat_active_time*/
,greatest(coalesce(p5.active_time,'1900-01-01'),coalesce(p6.active_time,'1900-01-01'),coalesce(p7.active_time,'1900-01-01'),coalesce(p8.active_time,'1900-01-01')) /*last_activate_time*/
,coalesce(p8.active_time,'1900-01-01') /*udesk_active_time*/
,coalesce(p2.create_time,'9999-12-31') /*crm_create_time*/
,coalesce(p3.create_time,'9999-12-31') /*scrm_create_time*/
,coalesce(p4.create_time,'9999-12-31') /*livechat_create_time*/
,least(coalesce(p2.create_time,'9999-12-31'),coalesce(p3.create_time,'9999-12-31'),coalesce(p4.create_time,'9999-12-31')) /*lease_create_time*/
,Substr('cust_contact_info',1,3) /*src_sysname*/
,'cust_contact_info' /*src_table*/
,:ETLJOB /*etl_job*/
,TO_DATE(:TXDATE,'YYYYMMDD') /*etl_first_dt*/
,current_timestamp(0) /*etl_proc_dt*/
,TO_DATE(:TXDATE,'YYYYMMDD') /*etl_tx_dt*/
,0 /*etl_batch_no*/
FROM p30_common.cust_contact_info p1
LEFT JOIN :COMMDB.d_crm_contact p2
ON p1.crm_contact =p2.crm_contact_account
LEFT JOIN :COMMDB.d_scrm_contact p3
ON p1.scrm_contact =p3.scrm_leads_id
LEFT JOIN :COMMDB.d_livechat_contact p4
ON p1.livechat_contact =p4.livechat_leads_id
LEFT JOIN :COMMDB.v_cust_active p5
ON p1.crm_contact =p5.contact_account
and p5.contact_channel='CRM'
LEFT JOIN :COMMDB.v_cust_active p6
ON p1.scrm_contact =p6.contact_account
and p6.contact_channel='SCRM'
LEFT JOIN :COMMDB.v_cust_active p7
ON p1.livechat_contact =p7.contact_account
and p7.contact_channel='Livechat'
LEFT JOIN :COMMDB.v_cust_active p8
ON p1.udesk_contact =p8.contact_account
and p8.contact_channel ='Udesk'
;
create temporary table cust_all_info_temp
as select distinct on (contact_id) * from cust_all_info_agi_CUR_I;
delete from cust_all_info_agi_CUR_I;
insert into cust_all_info_agi_CUR_I
select * from cust_all_info_temp;
/*从目标表中删除所有数据 cust_all_info(客户信息) */
DELETE FROM :MARTDB.cust_all_info
WHERE ETL_JOB=:ETLJOB;
/*将新增数据插入到目标表 */
;INSERT INTO :MARTDB.cust_all_info (
contact_id /*联系编号*/
,contact /*联系方式*/
,contact_channel /*联系渠道*/
,full_name /*姓名*/
,mobile /*手机号*/
,email /*邮箱*/
,wechat /*微信*/
,company /*公司*/
,account /*账户*/
,country /*国家*/
,prov_name /*省份*/
,city_name /*城市*/
,industry /*行业*/
,mobile_phone_data_ind /*手机号是否有数据*/
,mobile_phone_availability /*手机号是否合规*/
,email_data_ind /*邮箱是否有数据*/
,email_availability /*邮箱是否合规*/
,crm_active_time /*CRM系统活跃时间*/
,scrm_active_time /*SCRM系统活跃时间*/
,livechat_active_time /*Livechat系统活跃时间*/
,last_activate_time /*最后活跃时间*/
,udesk_active_time /*Udesk系统活跃时间*/
,crm_create_time /*CRM创建时间*/
,scrm_create_time /*SCRM创建时间*/
,livechat_create_time /*Livechat创建时间*/
,lease_create_time /*最早创建时间*/
,src_sysname /*来源系统*/
,src_table /*来源表*/
,etl_job /*作业名称*/
,etl_first_dt /*最初入库时间*/
,etl_proc_dt /*本次入库时间*/
,etl_tx_dt /*作业运行时间*/
,etl_batch_no /*作业批次号*/
)
SELECT
P1.contact_id /*联系编号*/
,P1.contact /*联系方式*/
,P1.contact_channel /*联系渠道*/
,P1.full_name /*姓名*/
,P1.mobile /*手机号*/
,P1.email /*邮箱*/
,P1.wechat /*微信*/
,P1.company /*公司*/
,P1.account /*账户*/
,P1.country /*国家*/
,P1.prov_name /*省份*/
,P1.city_name /*城市*/
,P1.industry /*行业*/
,P1.mobile_phone_data_ind /*手机号是否有数据*/
,P1.mobile_phone_availability /*手机号是否合规*/
,P1.email_data_ind /*邮箱是否有数据*/
,P1.email_availability /*邮箱是否合规*/
,P1.crm_active_time /*CRM系统活跃时间*/
,P1.scrm_active_time /*SCRM系统活跃时间*/
,P1.livechat_active_time /*Livechat系统活跃时间*/
,P1.last_activate_time /*最后活跃时间*/
,P1.udesk_active_time /*Udesk系统活跃时间*/
,P1.crm_create_time /*CRM创建时间*/
,P1.scrm_create_time /*SCRM创建时间*/
,P1.livechat_create_time /*Livechat创建时间*/
,P1.lease_create_time /*最早创建时间*/
,P1.src_sysname /*来源系统*/
,P1.src_table /*来源表*/
,P1.etl_job /*作业名称*/
,P1.etl_first_dt /*最初入库时间*/
,P1.etl_proc_dt /*本次入库时间*/
,P1.etl_tx_dt /*作业运行时间*/
,P1.etl_batch_no /*作业批次号*/
FROM cust_all_info_agi_CUR_I P1
;
/*****程序结束退出 */
\q

View File

@ -0,0 +1,32 @@
DROP TABLE IF EXISTS p60_mart.cust_enagement_records;
CREATE TABLE IF NOT EXISTS p60_mart.cust_enagement_records (
contact_id VARCHAR(20)
, full_name VARCHAR(200)
, record_type VARCHAR(30)
, enagement_record VARCHAR(500)
, record_time timestamp(0)
, etl_batch_no VARCHAR(50)
, etl_first_dt timestamp(0)
, etl_job VARCHAR(200)
, etl_proc_dt timestamp(0)
, etl_tx_dt timestamp(0)
, src_sysname VARCHAR(50)
, src_table VARCHAR(50)
,primary key( contact_id,enagement_record,record_time )
);
COMMENT ON COLUMN p60_mart.cust_enagement_records.contact_id IS '客户编号';
COMMENT ON COLUMN p60_mart.cust_enagement_records.full_name IS '全名';
COMMENT ON COLUMN p60_mart.cust_enagement_records.record_type IS '记录类型';
COMMENT ON COLUMN p60_mart.cust_enagement_records.enagement_record IS '接触记录';
COMMENT ON COLUMN p60_mart.cust_enagement_records.record_time IS '记录时间';
COMMENT ON COLUMN p60_mart.cust_enagement_records.etl_batch_no IS '作业批次号';
COMMENT ON COLUMN p60_mart.cust_enagement_records.etl_first_dt IS '最初入库时间';
COMMENT ON COLUMN p60_mart.cust_enagement_records.etl_job IS '作业名称';
COMMENT ON COLUMN p60_mart.cust_enagement_records.etl_proc_dt IS '本次入库时间';
COMMENT ON COLUMN p60_mart.cust_enagement_records.etl_tx_dt IS '作业运行时间';
COMMENT ON COLUMN p60_mart.cust_enagement_records.src_sysname IS '来源系统';
COMMENT ON COLUMN p60_mart.cust_enagement_records.src_table IS '来源表';
COMMENT ON TABLE p60_mart.cust_enagement_records IS '客户接触记录';

View File

@ -0,0 +1,130 @@
/***************************************************************************************************/
/*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_enagement_records(客户接触记录) */
/*Create Date:2024-06-17 11:18:28 */
/*SDM Developed By: dev */
/*SDM Developed Date: 2024-06-17 */
/*SDM Checked By: dev */
/*SDM Checked Date: 2024-06-17 */
/*Script Developed By: dev */
/*Script Checked By: dev */
/*Source table 1: :COMMDB.cust_leads_detail */
/*Source table 2: :COMMDB.select distinct on (contact_id) contact_id,full_name,contact_channel from p30_COMMON.cust_contact_info*/
/*Source table 3: :COMMDB.v_cust_contact_mapping */
/*Job Type: Inbound transform (Tier 1 to Tier 2) */
/*Target Table:cust_enagement_records */
/*ETL Job Name:cust_enagement_records */
/*ETL Frequency:Daily */
/*ETL Policy:F1 */
/********************************************************************************************/
/*******Main Section**************************************************************************/
\set ON_ERROR_STOP on
\set AUTOCOMMIT on
\timing on
/*创建临时表加载当前数据 */
CREATE TEMPORARY TABLE cust_enagement_records_agi_CUR_I
( LIKE :MARTDB.cust_enagement_records)
ON COMMIT PRESERVE ROWS;
/*****************************************************************************************************/
/* GROUP 1:Source Table:cust_leads_detail*************************************************************/
/*****************************************************************************************************/
INSERT INTO cust_enagement_records_agi_CUR_I (
contact_id /*客户编号*/
,full_name /*全名*/
,record_type /*记录类型*/
,enagement_record /*接触记录*/
,record_time /*记录时间*/
,etl_batch_no /*作业批次号*/
,etl_first_dt /*最初入库时间*/
,etl_job /*作业名称*/
,etl_proc_dt /*本次入库时间*/
,etl_tx_dt /*作业运行时间*/
,src_sysname /*来源系统*/
,src_table /*来源表*/
)
SELECT
coalesce(p2.contact_id,'') /*contact_id*/
,coalesce(p2.full_name,'') /*full_name*/
,COALESCE(TRIM(CAST(p0.contact_channel AS VARCHAR(30))),'') /*record_type*/
,case when p0.contact_channel = 'CRM Raw Leads' then p0."label"
else p0.contact_account
end /*enagement_record*/
,case when p0.contact_channel = 'CRM Raw Leads' then p0.contact_channel ||'_'|| p0."label" ||'_'|| p0."event"
when p0.contact_channel = 'Chat' then p0.contact_channel ||'_'|| p0."event"
when p0.contact_channel = 'Call' then p0.contact_channel ||'_'|| p0."label" ||'_'|| p0."event"
when p0.contact_channel = 'SCRM Event' then p0.contact_channel ||'_'|| p0."label" ||'_'|| p0."event"
end /*record_time*/
,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('cust_leads_detail',1,3) /*src_sysname*/
,'cust_leads_detail' /*src_table*/
FROM :COMMDB.cust_leads_detail p0
LEFT JOIN :COMMDB.v_cust_contact_mapping p1
ON p0 .contact_account =p1 .contact
and p1 .contact_channel = case when p0.contact_channel = 'CRM Raw Leads' then 'CRM'
when p0.contact_channel = 'Chat' then 'Livechat'
when p0.contact_channel = 'Call' then 'Udesk'
when p0.contact_channel = 'SCRM Event' then 'SCRM'
end
LEFT JOIN (select distinct on (contact_id) contact_id,full_name,contact_channel from p30_COMMON.cust_contact_info) p2
ON p1.contact_id=p2.contact_id
where coalesce(p2.contact_id,'')<>''
;
/*从目标表中删除所有数据 cust_enagement_records(客户接触记录) */
DELETE FROM :MARTDB.cust_enagement_records
WHERE ETL_JOB=:ETLJOB;
/*将新增数据插入到目标表 */
;INSERT INTO :MARTDB.cust_enagement_records (
full_name /*全名*/
,record_type /*记录类型*/
,contact_id /*客户编号*/
,enagement_record /*接触记录*/
,record_time /*记录时间*/
,etl_batch_no /*作业批次号*/
,etl_first_dt /*最初入库时间*/
,etl_job /*作业名称*/
,etl_proc_dt /*本次入库时间*/
,etl_tx_dt /*作业运行时间*/
,src_sysname /*来源系统*/
,src_table /*来源表*/
)
SELECT
P1.full_name /*全名*/
,P1.record_type /*记录类型*/
,P1.contact_id /*客户编号*/
,P1.enagement_record /*接触记录*/
,P1.record_time /*记录时间*/
,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 cust_enagement_records_agi_CUR_I P1
;
/*****程序结束退出 */
\q

View File

@ -0,0 +1,14 @@
DROP TABLE IF EXISTS p30_common.cust_leads;
CREATE TABLE IF NOT EXISTS p30_common.cust_leads (
contact_channel text
, contact_account VARCHAR(0)
, active_time timestamp(0)
);
COMMENT ON COLUMN p30_common.cust_leads.contact_channel IS '';
COMMENT ON COLUMN p30_common.cust_leads.contact_account IS '';
COMMENT ON COLUMN p30_common.cust_leads.active_time IS '';
COMMENT ON TABLE p30_common.cust_leads IS '';

View File

@ -0,0 +1,201 @@
/***************************************************************************************************/
/*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_leads(客户线索) */
/*Create Date:2024-05-06 17:28:10 */
/*SDM Developed By: dev */
/*SDM Developed Date: 2024-01-19 */
/*SDM Checked By: dev */
/*SDM Checked Date: 2024-05-06 */
/*Script Developed By: dev */
/*Script Checked By: dev */
/*Source table 1: p20_pdm.t01_scrm_leads */
/*Source table 2: p20_pdm.t01_crm_raw_leads */
/*Source table 3: p20_pdm.t01_scrm_leads_his */
/*Source table 4: p20_pdm.t01_livechat_record */
/*Job Type: Inbound transform (Tier 1 to Tier 2) */
/*Target Table:cust_leads */
/*ETL Job Name:cust_leads */
/*ETL Frequency:Daily */
/*ETL Policy:F1 */
/********************************************************************************************/
/*******Main Section**************************************************************************/
\set ON_ERROR_STOP on
\set AUTOCOMMIT on
\timing on
/*创建临时表加载当前数据 */
CREATE TEMPORARY TABLE cust_leads_agi_CUR_I
( LIKE :COMMDB.cust_leads)
ON COMMIT PRESERVE ROWS;
/*****************************************************************************************************/
/* GROUP 1:Source Table:t01_livechat_record***********************************************************/
/*****************************************************************************************************/
INSERT INTO cust_leads_agi_CUR_I (
contact_channel /*线索渠道*/
,contact_account /*线索编号*/
,active_time /*活跃时间*/
,src_sysname /*来源系统*/
,src_table /*来源表*/
,etl_job /*作业名称*/
,etl_first_dt /*最初入库时间*/
,etl_proc_dt /*本次入库时间*/
,etl_tx_dt /*作业运行时间*/
,etl_batch_no /*作业批次号*/
)
SELECT
'Livechat' /*contact_channel*/
,COALESCE(TRIM(CAST(p0.livechat_leads_id AS VARCHAR(50))),'') /*contact_account*/
,COALESCE(p0.chat_start_time,TO_TIMESTAMP(:NULLDATE,'YYYYMMDD')) /*active_time*/
,Substr('t01_livechat_record',1,3) /*src_sysname*/
,'t01_livechat_record' /*src_table*/
,:ETLJOB /*etl_job*/
,TO_DATE(:TXDATE,'YYYYMMDD') /*etl_first_dt*/
,current_timestamp(0) /*etl_proc_dt*/
,TO_DATE(:TXDATE,'YYYYMMDD') /*etl_tx_dt*/
,0 /*etl_batch_no*/
FROM p20_pdm.t01_livechat_record p0
;
/*****************************************************************************************************/
/* GROUP 2:Source Table:t01_crm_raw_leads*************************************************************/
/*****************************************************************************************************/
INSERT INTO cust_leads_agi_CUR_I (
contact_channel /*线索渠道*/
,contact_account /*线索编号*/
,active_time /*活跃时间*/
,src_sysname /*来源系统*/
,src_table /*来源表*/
,etl_job /*作业名称*/
,etl_first_dt /*最初入库时间*/
,etl_proc_dt /*本次入库时间*/
,etl_tx_dt /*作业运行时间*/
,etl_batch_no /*作业批次号*/
)
SELECT
'CRM' /*contact_channel*/
,COALESCE(TRIM(CAST(p0.crm_contact_account AS VARCHAR(50))),'') /*contact_account*/
,COALESCE(TO_TIMESTAMP(CAST(p0.create_time AS VARCHAR(19)),'YYYY-MM-DD HH24:mi:ss'),TO_TIMESTAMP(:NULLDATE,'YYYYMMDD')) /*active_time*/
,Substr('t01_crm_raw_leads',1,3) /*src_sysname*/
,'t01_crm_raw_leads' /*src_table*/
,:ETLJOB /*etl_job*/
,TO_DATE(:TXDATE,'YYYYMMDD') /*etl_first_dt*/
,current_timestamp(0) /*etl_proc_dt*/
,TO_DATE(:TXDATE,'YYYYMMDD') /*etl_tx_dt*/
,0 /*etl_batch_no*/
FROM p20_pdm.t01_crm_raw_leads p0
;
/*****************************************************************************************************/
/* GROUP 3:Source Table:t01_scrm_leads****************************************************************/
/*****************************************************************************************************/
INSERT INTO cust_leads_agi_CUR_I (
contact_channel /*线索渠道*/
,contact_account /*线索编号*/
,active_time /*活跃时间*/
,src_sysname /*来源系统*/
,src_table /*来源表*/
,etl_job /*作业名称*/
,etl_first_dt /*最初入库时间*/
,etl_proc_dt /*本次入库时间*/
,etl_tx_dt /*作业运行时间*/
,etl_batch_no /*作业批次号*/
)
SELECT
'SCRM' /*contact_channel*/
,COALESCE(TRIM(CAST(p0.customer_id AS VARCHAR(50))),'') /*contact_account*/
,COALESCE(p0.date,TO_TIMESTAMP(:NULLDATE,'YYYYMMDD')) /*active_time*/
,Substr('t01_scrm_leads',1,3) /*src_sysname*/
,'t01_scrm_leads' /*src_table*/
,:ETLJOB /*etl_job*/
,TO_DATE(:TXDATE,'YYYYMMDD') /*etl_first_dt*/
,current_timestamp(0) /*etl_proc_dt*/
,TO_DATE(:TXDATE,'YYYYMMDD') /*etl_tx_dt*/
,0 /*etl_batch_no*/
FROM p20_pdm.t01_scrm_leads p0
;
/*****************************************************************************************************/
/* GROUP 4:Source Table:t01_scrm_leads_his************************************************************/
/*****************************************************************************************************/
INSERT INTO cust_leads_agi_CUR_I (
contact_channel /*线索渠道*/
,contact_account /*线索编号*/
,active_time /*活跃时间*/
,src_sysname /*来源系统*/
,src_table /*来源表*/
,etl_job /*作业名称*/
,etl_first_dt /*最初入库时间*/
,etl_proc_dt /*本次入库时间*/
,etl_tx_dt /*作业运行时间*/
,etl_batch_no /*作业批次号*/
)
SELECT
'SCRM' /*contact_channel*/
,COALESCE(TRIM(CAST(p0.cue_id AS VARCHAR(50))),'') /*contact_account*/
,COALESCE(p0.activate_time,TO_TIMESTAMP(:NULLDATE,'YYYYMMDD')) /*active_time*/
,Substr('t01_scrm_leads_his',1,3) /*src_sysname*/
,'t01_scrm_leads_his' /*src_table*/
,:ETLJOB /*etl_job*/
,TO_DATE(:TXDATE,'YYYYMMDD') /*etl_first_dt*/
,current_timestamp(0) /*etl_proc_dt*/
,TO_DATE(:TXDATE,'YYYYMMDD') /*etl_tx_dt*/
,0 /*etl_batch_no*/
FROM p20_pdm.t01_scrm_leads_his p0
;
/*从目标表中删除所有数据 cust_leads(客户线索) */
DELETE FROM :COMMDB.cust_leads
WHERE ETL_JOB=:ETLJOB;
/*将新增数据插入到目标表 */
;INSERT INTO :COMMDB.cust_leads (
contact_channel /*线索渠道*/
,contact_account /*线索编号*/
,active_time /*活跃时间*/
,src_sysname /*来源系统*/
,src_table /*来源表*/
,etl_job /*作业名称*/
,etl_first_dt /*最初入库时间*/
,etl_proc_dt /*本次入库时间*/
,etl_tx_dt /*作业运行时间*/
,etl_batch_no /*作业批次号*/
)
SELECT
P1.contact_channel /*线索渠道*/
,P1.contact_account /*线索编号*/
,P1.active_time /*活跃时间*/
,P1.src_sysname /*来源系统*/
,P1.src_table /*来源表*/
,P1.etl_job /*作业名称*/
,P1.etl_first_dt /*最初入库时间*/
,P1.etl_proc_dt /*本次入库时间*/
,P1.etl_tx_dt /*作业运行时间*/
,P1.etl_batch_no /*作业批次号*/
FROM cust_leads_agi_CUR_I P1
;
/*****程序结束退出 */
\q

View File

@ -0,0 +1,32 @@
DROP TABLE IF EXISTS p30_common.cust_leads_detail;
CREATE TABLE IF NOT EXISTS p30_common.cust_leads_detail (
contact_channel varchar(50)
, contact_account varchar(50)
, label varchar(50)
, event varchar(100)
, active_time timestamp(0)
, Src_Sysname varchar(50)
, Src_Table varchar(50)
, Etl_Job varchar(200)
, Etl_First_Dt timestamp(0)
, Etl_Tx_Dt timestamp(0)
, Etl_Proc_Dt timestamp(0)
, Etl_Batch_No varchar(50)
,primary key( contact_channel,contact_account,label,active_time )
);
COMMENT ON COLUMN p30_common.cust_leads_detail.contact_channel IS '线索渠道';
COMMENT ON COLUMN p30_common.cust_leads_detail.contact_account IS '线索编号';
COMMENT ON COLUMN p30_common.cust_leads_detail.label IS '标签';
COMMENT ON COLUMN p30_common.cust_leads_detail.event IS '事件';
COMMENT ON COLUMN p30_common.cust_leads_detail.active_time IS '活跃时间';
COMMENT ON COLUMN p30_common.cust_leads_detail.Src_Sysname IS '来源系统';
COMMENT ON COLUMN p30_common.cust_leads_detail.Src_Table IS '来源表';
COMMENT ON COLUMN p30_common.cust_leads_detail.Etl_Job IS '作业名称';
COMMENT ON COLUMN p30_common.cust_leads_detail.Etl_First_Dt IS '最初入库时间';
COMMENT ON COLUMN p30_common.cust_leads_detail.Etl_Tx_Dt IS '作业运行时间';
COMMENT ON COLUMN p30_common.cust_leads_detail.Etl_Proc_Dt IS '本次入库时间';
COMMENT ON COLUMN p30_common.cust_leads_detail.Etl_Batch_No IS '作业批次号';
COMMENT ON TABLE p30_common.cust_leads_detail IS '客户线索明细';

View File

@ -0,0 +1,334 @@
/***************************************************************************************************/
/*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_leads_detail(客户线索明细) */
/*Create Date:2024-09-10 13:28:54 */
/*SDM Developed By: dev */
/*SDM Developed Date: 2024-05-31 */
/*SDM Checked By: dev */
/*SDM Checked Date: 2024-09-10 */
/*Script Developed By: dev */
/*Script Checked By: dev */
/*Source table 1: :PDMDB.t01_scrm_leads_his */
/*Source table 2: :PDMDB.t01_udesk_record */
/*Source table 3: :PDMDB.t01_livechat_record */
/*Source table 4: :PDMDB.t01_scrm_leads */
/*Source table 5: :PDMDB.t01_crm_raw_leads */
/*Job Type: Inbound transform (Tier 1 to Tier 2) */
/*Target Table:cust_leads_detail */
/*ETL Job Name:cust_leads_detail */
/*ETL Frequency:Daily */
/*ETL Policy:F2 */
/********************************************************************************************/
/*******Main Section**************************************************************************/
\set ON_ERROR_STOP on
\set AUTOCOMMIT on
\timing on
/*创建临时表加载当前数据 */
CREATE TEMPORARY TABLE cust_leads_detail_agi_CUR_I
( LIKE :COMMDB.cust_leads_detail)
ON COMMIT PRESERVE ROWS;
/*创建临时表加载不同数据 */
CREATE TEMPORARY TABLE cust_leads_detail_agi_INS
( LIKE :COMMDB.cust_leads_detail)
ON COMMIT PRESERVE ROWS;
/*****************************************************************************************************/
/* GROUP 1:Source Table:t01_crm_raw_leads*************************************************************/
/*****************************************************************************************************/
INSERT INTO cust_leads_detail_agi_CUR_I (
contact_channel /*线索渠道*/
,contact_account /*联系编号*/
,label /*标签*/
,event /*事件*/
,active_time /*活跃时间*/
,Src_Sysname /*来源系统*/
,Src_Table /*来源表*/
,Etl_Job /*作业名称*/
,Etl_First_Dt /*最初入库时间*/
,Etl_Tx_Dt /*作业运行时间*/
,Etl_Proc_Dt /*本次入库时间*/
,Etl_Batch_No /*作业批次号*/
)
SELECT
'CRM Raw Leads' /*contact_channel*/
,COALESCE(TRIM(CAST(p0.crm_contact_account AS varchar(50))),'') /*contact_account*/
,COALESCE(TRIM(CAST(p0.lead_number AS varchar(50))),'') /*label*/
,COALESCE(TRIM(CAST(p0.market_type AS varchar(100))),'') /*event*/
,COALESCE(p0.create_time,TO_TIMESTAMP(:NULLDATE,'YYYYMMDD')) /*active_time*/
,Substr('t01_crm_raw_leads',1,3) /*Src_Sysname*/
,'t01_crm_raw_leads' /*Src_Table*/
,:ETLJOB /*Etl_Job*/
,TO_DATE(:TXDATE,'YYYYMMDD') /*Etl_First_Dt*/
,TO_DATE(:TXDATE,'YYYYMMDD') /*Etl_Tx_Dt*/
,current_timestamp(0) /*Etl_Proc_Dt*/
,0 /*Etl_Batch_No*/
FROM :PDMDB.t01_crm_raw_leads p0
;
/*****************************************************************************************************/
/* GROUP 2:Source Table:t01_scrm_leads_his************************************************************/
/*****************************************************************************************************/
INSERT INTO cust_leads_detail_agi_CUR_I (
contact_channel /*线索渠道*/
,contact_account /*联系编号*/
,label /*标签*/
,event /*事件*/
,active_time /*活跃时间*/
,Src_Sysname /*来源系统*/
,Src_Table /*来源表*/
,Etl_Job /*作业名称*/
,Etl_First_Dt /*最初入库时间*/
,Etl_Tx_Dt /*作业运行时间*/
,Etl_Proc_Dt /*本次入库时间*/
,Etl_Batch_No /*作业批次号*/
)
SELECT
'SCRM Event' /*contact_channel*/
,COALESCE(TRIM(CAST(p0.cue_id AS varchar(50))),'') /*contact_account*/
,COALESCE(TRIM(CAST(p0.activate_name AS varchar(50))),'') /*label*/
,COALESCE(TRIM(CAST(p0.event_name AS varchar(100))),'') /*event*/
,COALESCE(p0.activate_time,TO_TIMESTAMP(:NULLDATE,'YYYYMMDD')) /*active_time*/
,Substr('t01_scrm_leads_his',1,3) /*Src_Sysname*/
,'t01_scrm_leads_his' /*Src_Table*/
,:ETLJOB /*Etl_Job*/
,TO_DATE(:TXDATE,'YYYYMMDD') /*Etl_First_Dt*/
,TO_DATE(:TXDATE,'YYYYMMDD') /*Etl_Tx_Dt*/
,current_timestamp(0) /*Etl_Proc_Dt*/
,0 /*Etl_Batch_No*/
FROM :PDMDB.t01_scrm_leads_his p0
;
/*****************************************************************************************************/
/* GROUP 3:Source Table:t01_scrm_leads****************************************************************/
/*****************************************************************************************************/
INSERT INTO cust_leads_detail_agi_CUR_I (
contact_channel /*线索渠道*/
,contact_account /*联系编号*/
,label /*标签*/
,event /*事件*/
,active_time /*活跃时间*/
,Src_Sysname /*来源系统*/
,Src_Table /*来源表*/
,Etl_Job /*作业名称*/
,Etl_First_Dt /*最初入库时间*/
,Etl_Tx_Dt /*作业运行时间*/
,Etl_Proc_Dt /*本次入库时间*/
,Etl_Batch_No /*作业批次号*/
)
SELECT
'SCRM Event' /*contact_channel*/
,COALESCE(TRIM(CAST(p0.customer_id AS varchar(50))),'') /*contact_account*/
,COALESCE(TRIM(CAST(p0.label AS varchar(50))),'') /*label*/
,COALESCE(TRIM(CAST(p0.target_name AS varchar(100))),'') /*event*/
,COALESCE(p0.date,TO_TIMESTAMP(:NULLDATE,'YYYYMMDD')) /*active_time*/
,Substr('t01_scrm_leads',1,3) /*Src_Sysname*/
,'t01_scrm_leads' /*Src_Table*/
,:ETLJOB /*Etl_Job*/
,TO_DATE(:TXDATE,'YYYYMMDD') /*Etl_First_Dt*/
,TO_DATE(:TXDATE,'YYYYMMDD') /*Etl_Tx_Dt*/
,current_timestamp(0) /*Etl_Proc_Dt*/
,0 /*Etl_Batch_No*/
FROM :PDMDB.t01_scrm_leads p0
;
/*****************************************************************************************************/
/* GROUP 4:Source Table:t01_udesk_record**************************************************************/
/*****************************************************************************************************/
INSERT INTO cust_leads_detail_agi_CUR_I (
contact_channel /*线索渠道*/
,contact_account /*联系编号*/
,label /*标签*/
,event /*事件*/
,active_time /*活跃时间*/
,Src_Sysname /*来源系统*/
,Src_Table /*来源表*/
,Etl_Job /*作业名称*/
,Etl_First_Dt /*最初入库时间*/
,Etl_Tx_Dt /*作业运行时间*/
,Etl_Proc_Dt /*本次入库时间*/
,Etl_Batch_No /*作业批次号*/
)
SELECT
'Call' /*contact_channel*/
,COALESCE(TRIM(p0.call_id),'') /*contact_account*/
,COALESCE(TRIM(CAST(p0.type AS varchar(50))),'') /*label*/
,case when p0.responsible_group = 'MKT' then '产品报价'
when p0.responsible_group = 'IAM' then '产品报价'
when p0.responsible_group = 'TSC-KEI' then '技术支持'
when p0.responsible_group = 'TSC-TEK' then '技术支持'
when p0.responsible_group = 'SSO-TEK' then '维修与校准'
else '其他' end /*event*/
,COALESCE(p0.record_time,TO_TIMESTAMP(:NULLDATE,'YYYYMMDD')) /*active_time*/
,Substr('t01_udesk_record',1,3) /*Src_Sysname*/
,'t01_udesk_record' /*Src_Table*/
,:ETLJOB /*Etl_Job*/
,TO_DATE(:TXDATE,'YYYYMMDD') /*Etl_First_Dt*/
,TO_DATE(:TXDATE,'YYYYMMDD') /*Etl_Tx_Dt*/
,current_timestamp(0) /*Etl_Proc_Dt*/
,0 /*Etl_Batch_No*/
FROM (select distinct on (call_id)
* from p20_pdm.t01_udesk_record tur
order by call_id,"type") p0
;
/*****************************************************************************************************/
/* GROUP 5:Source Table:t01_livechat_record***********************************************************/
/*****************************************************************************************************/
INSERT INTO cust_leads_detail_agi_CUR_I (
contact_channel /*线索渠道*/
,contact_account /*联系编号*/
,label /*标签*/
,event /*事件*/
,active_time /*活跃时间*/
,Src_Sysname /*来源系统*/
,Src_Table /*来源表*/
,Etl_Job /*作业名称*/
,Etl_First_Dt /*最初入库时间*/
,Etl_Tx_Dt /*作业运行时间*/
,Etl_Proc_Dt /*本次入库时间*/
,Etl_Batch_No /*作业批次号*/
)
SELECT
'Chat' /*contact_channel*/
,COALESCE(TRIM(CAST(p0.livechat_leads_id AS varchar(50))),'') /*contact_account*/
,COALESCE(TRIM(p0.pre_chat_service),'') /*label*/
,case when p0.pre_chat_service like '%维修%' then '维修与校准'
when p0.pre_chat_service like '%技术%' then '技术支持'
when p0.pre_chat_service like '%售后%' then '售后服务'
when p0.pre_chat_service like '%报价%' then '产品报价'
else '其他' end /*event*/
,COALESCE(p0.chat_creation_time,TO_TIMESTAMP(:NULLDATE,'YYYYMMDD')) /*active_time*/
,Substr('t01_livechat_record',1,3) /*Src_Sysname*/
,'t01_livechat_record' /*Src_Table*/
,:ETLJOB /*Etl_Job*/
,TO_DATE(:TXDATE,'YYYYMMDD') /*Etl_First_Dt*/
,TO_DATE(:TXDATE,'YYYYMMDD') /*Etl_Tx_Dt*/
,current_timestamp(0) /*Etl_Proc_Dt*/
,0 /*Etl_Batch_No*/
FROM :PDMDB.t01_livechat_record p0
;
/*将不同数据插入到临时表 */
;INSERT INTO cust_leads_detail_agi_INS (
event /*事件*/
,contact_channel /*线索渠道*/
,contact_account /*联系编号*/
,label /*标签*/
,active_time /*活跃时间*/
,Src_Sysname /*来源系统*/
,Src_Table /*来源表*/
,Etl_Job /*作业名称*/
,Etl_First_Dt /*最初入库时间*/
,Etl_Tx_Dt /*作业运行时间*/
,Etl_Proc_Dt /*本次入库时间*/
,Etl_Batch_No /*作业批次号*/
)
SELECT
P1.event /*事件*/
,P1.contact_channel /*线索渠道*/
,P1.contact_account /*联系编号*/
,P1.label /*标签*/
,P1.active_time /*活跃时间*/
,P1.Src_Sysname /*来源系统*/
,P1.Src_Table /*来源表*/
,P1.Etl_Job /*作业名称*/
,P1.Etl_First_Dt /*最初入库时间*/
,P1.Etl_Tx_Dt /*作业运行时间*/
,P1.Etl_Proc_Dt /*本次入库时间*/
,P1.Etl_Batch_No /*作业批次号*/
FROM cust_leads_detail_agi_CUR_I P1
LEFT JOIN :COMMDB.cust_leads_detail P2
ON P1.event = P2.event
AND P1.contact_channel = P2.contact_channel
AND P1.contact_account = P2.contact_account
AND P1.label = P2.label
AND P1.active_time = P2.active_time
WHERE P2.event IS NULL
OR P2.contact_channel IS NULL
OR P2.contact_account IS NULL
OR P2.label IS NULL
OR P2.active_time IS NULL
;
/*将新增数据插入到目标表 */
;INSERT INTO :COMMDB.cust_leads_detail (
event /*事件*/
,contact_channel /*线索渠道*/
,contact_account /*联系编号*/
,label /*标签*/
,active_time /*活跃时间*/
,Src_Sysname /*来源系统*/
,Src_Table /*来源表*/
,Etl_Job /*作业名称*/
,Etl_First_Dt /*最初入库时间*/
,Etl_Tx_Dt /*作业运行时间*/
,Etl_Proc_Dt /*本次入库时间*/
,Etl_Batch_No /*作业批次号*/
)
SELECT
P1.event /*事件*/
,P1.contact_channel /*线索渠道*/
,P1.contact_account /*联系编号*/
,P1.label /*标签*/
,P1.active_time /*活跃时间*/
,P1.Src_Sysname /*来源系统*/
,P1.Src_Table /*来源表*/
,P1.Etl_Job /*作业名称*/
,P1.Etl_First_Dt /*最初入库时间*/
,P1.Etl_Tx_Dt /*作业运行时间*/
,P1.Etl_Proc_Dt /*本次入库时间*/
,P1.Etl_Batch_No /*作业批次号*/
FROM cust_leads_detail_agi_INS P1
ON CONFLICT ( contact_channel,contact_account,label,active_time)
DO UPDATE SET
contact_channel=excluded.contact_channel
,contact_account=excluded.contact_account
,label=excluded.label
,active_time=excluded.active_time
,event=excluded.event
,Src_Sysname=excluded.Src_Sysname
,Src_Table=excluded.Src_Table
,Etl_Job=excluded.Etl_Job
,Etl_First_Dt=excluded.Etl_First_Dt
,Etl_Tx_Dt=excluded.Etl_Tx_Dt
,Etl_Proc_Dt=excluded.Etl_Proc_Dt
,Etl_Batch_No=excluded.Etl_Batch_No
;
/*****程序结束退出 */
\q

View File

@ -0,0 +1,86 @@
DROP TABLE IF EXISTS p30_common.cust_contact_info;
CREATE TABLE IF NOT EXISTS p30_common.cust_contact_info (
contact_id text
, contact text
, contact_channel text
, full_name text
, mobile VARCHAR(0)
, email VARCHAR(0)
, wechat VARCHAR(0)
, company VARCHAR(0)
, account text
, country VARCHAR(0)
, prov_name VARCHAR(0)
, city_name VARCHAR(0)
, industry VARCHAR(50)
, ccp_value VARCHAR(0)
, crm_contact text
, crm_full_name text
, crm_mobile VARCHAR(0)
, crm_email VARCHAR(0)
, crm_company VARCHAR(0)
, crm_account VARCHAR(0)
, account_name text
, crm_country_name VARCHAR(0)
, crm_prov_name VARCHAR(0)
, crm_city_name VARCHAR(0)
, crm_industry VARCHAR(50)
, scrm_contact text
, scrm_full_name VARCHAR(0)
, scrm_mobile text
, scrm_email VARCHAR(0)
, scrm_wechat VARCHAR(0)
, scrm_company VARCHAR(0)
, scrm_prov_name VARCHAR(0)
, scrm_city_name VARCHAR(0)
, livechat_contact text
, livechat_full_name VARCHAR(0)
, livechat_mobile VARCHAR(0)
, livechat_email VARCHAR(0)
, livechat_company VARCHAR(0)
, livechat_country VARCHAR(0)
);
COMMENT ON COLUMN p30_common.cust_contact_info.contact_id IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.contact IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.contact_channel IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.full_name IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.mobile IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.email IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.wechat IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.company IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.account IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.country IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.prov_name IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.city_name IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.industry IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.ccp_value IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.crm_contact IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.crm_full_name IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.crm_mobile IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.crm_email IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.crm_company IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.crm_account IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.account_name IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.crm_country_name IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.crm_prov_name IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.crm_city_name IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.crm_industry IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.scrm_contact IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.scrm_full_name IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.scrm_mobile IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.scrm_email IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.scrm_wechat IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.scrm_company IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.scrm_prov_name IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.scrm_city_name IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.livechat_contact IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.livechat_full_name IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.livechat_mobile IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.livechat_email IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.livechat_company IS '';
COMMENT ON COLUMN p30_common.cust_contact_info.livechat_country IS '';
COMMENT ON TABLE p30_common.cust_contact_info IS '';

View File

@ -0,0 +1,344 @@
/***************************************************************************************************/
/*script in Sql, generate by SdmCreateScript 2024(by IdgValue, qihang.feng@idgvalue.COM) */
/*VERSION 01.10 revised on 2020-08-25 */
/*Brilliance stems from wisdoms. */
/*************Head Section**************************************************************************/
/*Script Use: Periodically load data to :cust_contact_info(客户联系信息) */
/*Create Date:2025-10-17 17:30:22 */
/*SDM Developed By: dev */
/*SDM Developed Date: 2024-01-19 */
/*SDM Checked By: dev */
/*SDM Checked Date: 2025-10-17 */
/*Script Developed By: dev */
/*Script Checked By: dev */
/*Source table 1: :PDMDB.t01_crm_account */
/*Source table 2: :PDMDB.t00_china_city_info */
/*Source table 3: p30_common.cust_contact_mapping */
/*Source table 4: :PDMDB.t00_country_info */
/*Job Type: Inbound transform (Tier 1 to Tier 2) */
/*Target Table:cust_contact_info */
/*ETL Job Name:cust_contact_info */
/*ETL Frequency:Daily */
/*ETL Policy:F1 */
/********************************************************************************************/
/*******Main Section**************************************************************************/
\set ON_ERROR_STOP on
\set AUTOCOMMIT on
\timing on
/*创建临时表加载当前数据 */
CREATE TEMPORARY TABLE cust_contact_info_agi_CUR_I
( LIKE :COMMDB.cust_contact_info)
ON COMMIT PRESERVE ROWS;
/*****************************************************************************************************/
/* GROUP 1:Source Table:cust_contact_mapping**********************************************************/
/*****************************************************************************************************/
INSERT INTO cust_contact_info_agi_CUR_I (
contact_id /*联系人ID*/
,contact /*联系方式*/
,contact_channel /*联系人渠道*/
,full_name /*姓名*/
,mobile /*手机号*/
,email /*电子邮箱*/
,wechat /*微信*/
,company /*公司*/
,account /*账号*/
,country /*国家*/
,prov_name /*省份*/
,city_name /*城市*/
,industry /*行业*/
,crm_contact /*CRM线索号*/
,crm_full_name /*CRM姓名*/
,crm_mobile /*CRM手机号*/
,crm_email /*CRM邮箱*/
,crm_company /*CRM公司*/
,crm_account /*CRM账号*/
,account_name /*账号名称*/
,crm_country_name /*CRM国家*/
,crm_prov_name /*CRM省份*/
,crm_city_name /*CRM城市*/
,crm_industry /*CRM行业*/
,scrm_contact /*SCRM线索编号*/
,scrm_full_name /*SCRM姓名*/
,scrm_mobile /*SCRM手机号*/
,scrm_email /*SCRM邮箱*/
,scrm_wechat /*SCRM微信*/
,scrm_company /*SCRM公司*/
,scrm_prov_name /*SCRM省份*/
,scrm_city_name /*SCRM城市*/
,livechat_contact /*Livechat线索编号*/
,livechat_full_name /*Livechat姓名*/
,livechat_mobile /*Livechat手机号*/
,livechat_email /*Livechat邮箱*/
,livechat_company /*Livechat公司*/
,livechat_country /**/
,udesk_contact /*UdeskcallID*/
,udesk_full_name /*Udesk姓名*/
,udesk_mobile /*Udesk手机号*/
,udesk_company /*Udesk公司*/
,udesk_prov_name /*Udesk省份*/
,udesk_city_name /*udesk城市*/
,src_sysname /*来源系统*/
,src_table /*来源表*/
,etl_job /*作业名称*/
,etl_first_dt /*最初入库时间*/
,etl_proc_dt /*本次入库时间*/
,etl_tx_dt /*作业运行时间*/
,etl_batch_no /*作业批次号*/
)
SELECT
p1.contact_id /*contact_id*/
,p1.contact /*contact*/
,p1.contact_channel /*contact_channel*/
,p1.full_name /*full_name*/
,p1.mobile /*mobile*/
,p1.email /*email*/
,p1.wechat /*wechat*/
,p1.company /*company*/
,p1.account /*account*/
,coalesce(p3.country_en_name,p4.country_en_name,p1.country) /*country*/
,p1.prov_name /*prov_name*/
,coalesce(p2.city_name,p1.city_name) /*city_name*/
,p1.industry /*industry*/
,p1.crm_contact /*crm_contact*/
,p1.crm_full_name /*crm_full_name*/
,p1.crm_mobile /*crm_mobile*/
,p1.crm_email /*crm_email*/
,p1.crm_company /*crm_company*/
,p1.crm_account /*crm_account*/
,coalesce(p6.name,'') /*account_name*/
,p1.crm_country_name /*crm_country_name*/
,p1.crm_prov_name /*crm_prov_name*/
,p1.crm_city_name /*crm_city_name*/
,p1.crm_industry /*crm_industry*/
,p1.scrm_contact /*scrm_contact*/
,p1.scrm_full_name /*scrm_full_name*/
,p1.scrm_mobile /*scrm_mobile*/
,p1.scrm_email /*scrm_email*/
,p1.scrm_wechat /*scrm_wechat*/
,p1.scrm_company /*scrm_company*/
,p1.scrm_prov_name /*scrm_prov_name*/
,p1.scrm_city_name /*scrm_city_name*/
,p1.livechat_contact /*livechat_contact*/
,p1.livechat_full_name /*livechat_full_name*/
,p1.livechat_mobile /*livechat_mobile*/
, p1.livechat_email /*livechat_email*/
,p1.livechat_company /*livechat_company*/
,p1.livechat_country /*livechat_country*/
,p1.udesk_contact /*udesk_contact*/
,p1.udesk_full_name /*udesk_full_name*/
,p1.udesk_mobile /*udesk_mobile*/
,p1.udesk_company /*udesk_company*/
,p1.udesk_prov_name /*udesk_prov_name*/
,p1.udesk_city_name /*udesk_city_name*/
,Substr('cust_contact_mapping',1,3) /*src_sysname*/
,'cust_contact_mapping' /*src_table*/
,:ETLJOB /*etl_job*/
,TO_DATE(:TXDATE,'YYYYMMDD') /*etl_first_dt*/
,current_timestamp(0) /*etl_proc_dt*/
,TO_DATE(:TXDATE,'YYYYMMDD') /*etl_tx_dt*/
,0 /*etl_batch_no*/
FROM (select
p1.contact_id
,p1.user_id as contact
,case when crm_contact ='' and scrm_contact ='' and livechat_contact ='' then 'Udesk' else trim(case when crm_contact <> '' then 'CRM ' else '' end || case when scrm_contact <> '' then 'SCRM ' else '' end ||case when livechat_contact <> '' then 'Livechat ' else '' end) end contact_channel
,coalesce(p6.name,p2.full_name,p8.contact_name,p3.full_name,p4.full_name,p5.full_name,p7.contact_name ,'') full_name
,coalesce(cast(p6.tel as varchar(15)),p2.mobile_phone,p8.phone,p3.mobile_phone,p4.mobile_phone,p5.mobile_phone,p7.phone ,'') mobile
,coalesce(p6.email,p2.email,p8.email,p3.email,p4.email,p7.email,'') email
,coalesce(p6.external_id,p3.wechat_id,p7.wechat_id,'') wechat
,coalesce(p6.company,p2.company_name,p8.company,p3.company_name,p4.company_name,p5.company_name,p7.account_name ,'') company
,coalesce(p2.account_name,p8.company,p7.account_name,'') account
,case when p2.country_name is not null then p2.country_name
when p3.wechat_id is not null then 'China'
when p4.visitor_country_code is not null then p4.visitor_country_code
else 'China'
end country
,coalesce(p2.prov_name,p3.prov_name,p8.province,p5.prov_name ,'') prov_name
,coalesce(p2.city_name,p3.city_name,p8.city,p5.city_name,p7.city ,'') city_name
,coalesce(p2.industry) industry
,p1.crm_contact
,coalesce(p2.full_name,'') crm_full_name
,coalesce(p2.mobile_phone,'') crm_mobile
,coalesce(p2.email,'') crm_email
,coalesce(p2.company_name,'') crm_company
,coalesce(p2.account_name,'') crm_account
,coalesce(p2.account_name,'') account_name
,coalesce(p2.country_name,'') crm_country_name
,coalesce(p2.prov_name,'') crm_prov_name
,coalesce(p2.city_name,'') crm_city_name
,coalesce(p2.industry) crm_industry
,coalesce(p2.post_cd) crm_postcode
,p1.scrm_contact
,coalesce(p3.full_name,'') scrm_full_name
,coalesce(p3.mobile_phone,'') scrm_mobile
,coalesce(p3.email,'') scrm_email
,coalesce(p3.wechat_id,'') scrm_wechat
,coalesce(p3.company_name,'') scrm_company
,coalesce(p3.prov_name,'') scrm_prov_name
,coalesce(p3.city_name,'') scrm_city_name
,p1.livechat_contact
,coalesce(p4.full_name,'') livechat_full_name
,coalesce(p4.mobile_phone,'') livechat_mobile
,coalesce(p4.email,'') livechat_email
,coalesce(p4.company_name,'') livechat_company
,coalesce(p4.visitor_country_code,'') livechat_country
,p5.udesk_contact
,coalesce(p5.full_name,'') udesk_full_name
,coalesce(p5.mobile_phone,'') udesk_mobile
,coalesce(p5.company_name,'') udesk_company
,coalesce(p5.prov_name,'') udesk_prov_name
,coalesce(p5.city_name,'') udesk_city_name
from p30_common.v_cust_contact_mapping_all p1
left join p30_common.d_ccc_cust_info p6
on p1.ccc_contact = p6.id
left join p30_common.d_crm_contact p2
on p1.crm_contact =p2.crm_contact_account
left join p30_common.d_scrm_contact p3
on p1.scrm_contact =p3.scrm_leads_id
left join p30_common.d_livechat_contact p4
on p1.livechat_contact =livechat_leads_id
left join p30_common.d_udesk_contact p5
on p1.udesk_contact =p5.udesk_contact
left join p30_common.d_jdy_contact_info p7
on p1.jdy_contact =p7.jdy_contact_id
left join p30_common.d_partner_contact p8
on p1.partner_contact =p8.contact_id::text) p1
LEFT JOIN :PDMDB.t00_china_city_info p2
ON upper(p2.city_en) = upper(p1.city_name)
LEFT JOIN :PDMDB.t00_country_info p3
ON upper(p1.country)=upper(p3.country_en_name)
LEFT JOIN :PDMDB.t00_country_info p4
ON upper(p1.country)=upper(p4.country_cd)
LEFT JOIN :PDMDB.t01_crm_account p6
ON p1.crm_account =p6.accountnumber
;
/*从目标表中删除所有数据 cust_contact_info(客户联系信息) */
DELETE FROM :COMMDB.cust_contact_info
WHERE ETL_JOB=:ETLJOB;
/*将新增数据插入到目标表 */
;INSERT INTO :COMMDB.cust_contact_info (
contact_id /*联系人ID*/
,contact /*联系方式*/
,contact_channel /*联系人渠道*/
,full_name /*姓名*/
,mobile /*手机号*/
,email /*电子邮箱*/
,wechat /*微信*/
,company /*公司*/
,account /*账号*/
,country /*国家*/
,prov_name /*省份*/
,city_name /*城市*/
,industry /*行业*/
,crm_contact /*CRM线索号*/
,crm_full_name /*CRM姓名*/
,crm_mobile /*CRM手机号*/
,crm_email /*CRM邮箱*/
,crm_company /*CRM公司*/
,crm_account /*CRM账号*/
,account_name /*账号名称*/
,crm_country_name /*CRM国家*/
,crm_prov_name /*CRM省份*/
,crm_city_name /*CRM城市*/
,crm_industry /*CRM行业*/
,scrm_contact /*SCRM线索编号*/
,scrm_full_name /*SCRM姓名*/
,scrm_mobile /*SCRM手机号*/
,scrm_email /*SCRM邮箱*/
,scrm_wechat /*SCRM微信*/
,scrm_company /*SCRM公司*/
,scrm_prov_name /*SCRM省份*/
,scrm_city_name /*SCRM城市*/
,livechat_contact /*Livechat线索编号*/
,livechat_full_name /*Livechat姓名*/
,livechat_mobile /*Livechat手机号*/
,livechat_email /*Livechat邮箱*/
,livechat_company /*Livechat公司*/
,livechat_country /**/
,udesk_contact /*UdeskcallID*/
,udesk_full_name /*Udesk姓名*/
,udesk_mobile /*Udesk手机号*/
,udesk_company /*Udesk公司*/
,udesk_prov_name /*Udesk省份*/
,udesk_city_name /*udesk城市*/
,src_sysname /*来源系统*/
,src_table /*来源表*/
,etl_job /*作业名称*/
,etl_first_dt /*最初入库时间*/
,etl_proc_dt /*本次入库时间*/
,etl_tx_dt /*作业运行时间*/
,etl_batch_no /*作业批次号*/
)
SELECT
P1.contact_id /*联系人ID*/
,P1.contact /*联系方式*/
,P1.contact_channel /*联系人渠道*/
,P1.full_name /*姓名*/
,P1.mobile /*手机号*/
,P1.email /*电子邮箱*/
,P1.wechat /*微信*/
,P1.company /*公司*/
,P1.account /*账号*/
,P1.country /*国家*/
,P1.prov_name /*省份*/
,P1.city_name /*城市*/
,P1.industry /*行业*/
,P1.crm_contact /*CRM线索号*/
,P1.crm_full_name /*CRM姓名*/
,P1.crm_mobile /*CRM手机号*/
,P1.crm_email /*CRM邮箱*/
,P1.crm_company /*CRM公司*/
,P1.crm_account /*CRM账号*/
,P1.account_name /*账号名称*/
,P1.crm_country_name /*CRM国家*/
,P1.crm_prov_name /*CRM省份*/
,P1.crm_city_name /*CRM城市*/
,P1.crm_industry /*CRM行业*/
,P1.scrm_contact /*SCRM线索编号*/
,P1.scrm_full_name /*SCRM姓名*/
,P1.scrm_mobile /*SCRM手机号*/
,P1.scrm_email /*SCRM邮箱*/
,P1.scrm_wechat /*SCRM微信*/
,P1.scrm_company /*SCRM公司*/
,P1.scrm_prov_name /*SCRM省份*/
,P1.scrm_city_name /*SCRM城市*/
,P1.livechat_contact /*Livechat线索编号*/
,P1.livechat_full_name /*Livechat姓名*/
,P1.livechat_mobile /*Livechat手机号*/
,P1.livechat_email /*Livechat邮箱*/
,P1.livechat_company /*Livechat公司*/
,P1.livechat_country /**/
,P1.udesk_contact /*UdeskcallID*/
,P1.udesk_full_name /*Udesk姓名*/
,P1.udesk_mobile /*Udesk手机号*/
,P1.udesk_company /*Udesk公司*/
,P1.udesk_prov_name /*Udesk省份*/
,P1.udesk_city_name /*udesk城市*/
,P1.src_sysname /*来源系统*/
,P1.src_table /*来源表*/
,P1.etl_job /*作业名称*/
,P1.etl_first_dt /*最初入库时间*/
,P1.etl_proc_dt /*本次入库时间*/
,P1.etl_tx_dt /*作业运行时间*/
,P1.etl_batch_no /*作业批次号*/
FROM cust_contact_info_agi_CUR_I P1
;
/*****程序结束退出 */
\q

View File

@ -0,0 +1,40 @@
DROP TABLE IF EXISTS p30_common.cust_contact_mapping;
CREATE TABLE IF NOT EXISTS p30_common.cust_contact_mapping (
contact_id VARCHAR(50)
, user_id VARCHAR(50)
, crm_contact text
, scrm_contact text
, livechat_contact text
, udesk_contact text
, ccc_contact text
, src_sysname VARCHAR(50)
, src_table VARCHAR(50)
, etl_job VARCHAR(50)
, etl_first_dt timestamp(0)
, etl_proc_dt timestamp(0)
, etl_tx_dt DATE
, etl_batch_no VARCHAR(50)
, jdy_contact VARCHAR(50)
, partner_contact VARCHAR(50)
,primary key( contact_id )
);
COMMENT ON COLUMN p30_common.cust_contact_mapping.contact_id IS '联系编号';
COMMENT ON COLUMN p30_common.cust_contact_mapping.user_id IS '用户信息';
COMMENT ON COLUMN p30_common.cust_contact_mapping.crm_contact IS 'CRM信息';
COMMENT ON COLUMN p30_common.cust_contact_mapping.scrm_contact IS 'SCRM信息';
COMMENT ON COLUMN p30_common.cust_contact_mapping.livechat_contact IS 'Livechat客户信息';
COMMENT ON COLUMN p30_common.cust_contact_mapping.udesk_contact IS 'Udesk客户信息';
COMMENT ON COLUMN p30_common.cust_contact_mapping.ccc_contact IS 'ccc客户信息';
COMMENT ON COLUMN p30_common.cust_contact_mapping.src_sysname IS '来源系统';
COMMENT ON COLUMN p30_common.cust_contact_mapping.src_table IS '来源表';
COMMENT ON COLUMN p30_common.cust_contact_mapping.etl_job IS '作业名称';
COMMENT ON COLUMN p30_common.cust_contact_mapping.etl_first_dt IS '最初入库时间';
COMMENT ON COLUMN p30_common.cust_contact_mapping.etl_proc_dt IS '本次入库时间';
COMMENT ON COLUMN p30_common.cust_contact_mapping.etl_tx_dt IS '作业运行时间';
COMMENT ON COLUMN p30_common.cust_contact_mapping.etl_batch_no IS '作业批次号';
COMMENT ON COLUMN p30_common.cust_contact_mapping.jdy_contact IS '简道云客户信息';
COMMENT ON COLUMN p30_common.cust_contact_mapping.partner_contact IS 'partner客户信息';
COMMENT ON TABLE p30_common.cust_contact_mapping IS '客户联系方式映射';

View File

@ -0,0 +1,183 @@
/***************************************************************************************************/
/*script in Sql, generate by SdmCreateScript 2024(by IdgValue, qihang.feng@idgvalue.COM) */
/*VERSION 01.10 revised on 2020-08-25 */
/*Brilliance stems from wisdoms. */
/*************Head Section**************************************************************************/
/*Script Use: Periodically load data to :cust_contact_mapping(客户联系方式映射) */
/*Create Date:2025-10-17 14:26:00 */
/*SDM Developed By: dev */
/*SDM Developed Date: 2024-01-19 */
/*SDM Checked By: dev */
/*SDM Checked Date: 2025-10-17 */
/*Script Developed By: dev */
/*Script Checked By: dev */
/*Source table 1: p30_common.d_scrm_contact */
/*Source table 2: :COMMDB.cust_contact_mapping */
/*Job Type: Inbound transform (Tier 1 to Tier 2) */
/*Target Table:cust_contact_mapping */
/*ETL Job Name:cust_contact_mapping */
/*ETL Frequency:Daily */
/*ETL Policy:F1 */
/********************************************************************************************/
/*******Main Section**************************************************************************/
\set ON_ERROR_STOP on
\set AUTOCOMMIT on
\timing on
/*创建临时表加载当前数据 */
CREATE TEMPORARY TABLE cust_contact_mapping_agi_CUR_I
( LIKE :COMMDB.cust_contact_mapping)
ON COMMIT PRESERVE ROWS;
/*****************************************************************************************************/
/* GROUP 1:Source Table:d_scrm_contact****************************************************************/
/*****************************************************************************************************/
INSERT INTO cust_contact_mapping_agi_CUR_I (
contact_id /*联系编号*/
,user_id /*用户信息*/
,crm_contact /*CRM信息*/
,scrm_contact /*SCRM信息*/
,livechat_contact /*Livechat客户信息*/
,udesk_contact /*Udesk客户信息*/
,ccc_contact /*ccc客户信息*/
,src_sysname /*来源系统*/
,src_table /*来源表*/
,etl_job /*作业名称*/
,etl_first_dt /*最初入库时间*/
,etl_proc_dt /*本次入库时间*/
,etl_tx_dt /*作业运行时间*/
,etl_batch_no /*作业批次号*/
,jdy_contact /*简道云客户信息*/
,partner_contact /*partner客户信息*/
)
SELECT
coalesce(p1.contact_id,'LCON-'||lpad(nextval('p20_pdm.user_id_seq')::text,10,'0')) /*contact_id*/
,p0.user_id /*user_id*/
,p0.crm_contact /*crm_contact*/
,p0.scrm_contact /*scrm_contact*/
,p0.livechat_contact /*livechat_contact*/
,p0.udesk_contact /*udesk_contact*/
,p0.ccc_contact /*ccc_contact*/
,Substr('d_scrm_contact',1,3) /*src_sysname*/
,'d_scrm_contact' /*src_table*/
,:ETLJOB /*etl_job*/
,TO_DATE(:TXDATE,'YYYYMMDD') /*etl_first_dt*/
,current_timestamp(0) /*etl_proc_dt*/
,TO_DATE(:TXDATE,'YYYYMMDD') /*etl_tx_dt*/
,0 /*etl_batch_no*/
,p0.jdy_contact /*jdy_contact*/
,p0.Partner_contact /*partner_contact*/
FROM (select '' contact_id,user_id
,string_agg(case when src_channel='CRM' then crm_contact_account else '' end,',') crm_contact
,string_agg(case when src_channel='SCRM' then crm_contact_account else '' end,',') scrm_contact
,string_agg(case when src_channel='Livechat' then crm_contact_account else '' end,',') livechat_contact
,string_agg(case when src_channel='Udesk' then crm_contact_account else '' end,',') udesk_contact
,string_agg(case when src_channel='SMART CCC' then crm_contact_account else '' end,',') ccc_contact
,string_agg(case when src_channel='JDY' then crm_contact_account else '' end,',') jdy_contact
,string_agg(case when src_channel='Partner' then crm_contact_account else '' end,',') Partner_contact
from (
select case when tel ~ '^1[3-9]\d{9}$' then tel
when email ~ '[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$' then email
else name
end user_id,id crm_contact_account,'SMART CCC' src_channel from p30_common.d_ccc_cust_info
union all
select case when mobile_phone ~ '^1[3-9]\d{9}$' then mobile_phone
when email ~ '[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$' then email
else full_name
end user_id,crm_contact_account,'CRM' src_channel from p30_common.d_crm_contact
union all
select case when mobile_phone ~ '^1[3-9]\d{9}$' then mobile_phone
when email ~ '[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$' then email
when length(wechat_id) >5 then wechat_id
else full_name
end user_id,scrm_leads_id,'SCRM' from p30_common.d_scrm_contact
union all
select case when mobile_phone ~ '^1[3-9]\d{9}$' then mobile_phone
when email ~ '[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$' then email
else full_name
end user_id,livechat_leads_id,'Livechat' from p30_common.d_livechat_contact
union all
select case when mobile_phone ~ '^1[3-9]\d{9}$' then mobile_phone
else full_name
end user_id,udesk_contact,'Udesk' from p30_common.d_udesk_contact
union all
select case when phone ~ '^1[3-9]\d{9}$' then phone
when email ~ '[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$' then email
else contact_name
end user_id,contact_id::text partner_contact_account,'Partner' src_channel from p30_common.d_partner_contact
union all
select case when phone ~ '^1[3-9]\d{9}$' then phone
when email ~ '[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$' then email
else contact_name
end user_id,jdy_contact_id jdy_contact_account,'JDY' from p30_common.d_jdy_contact_info
where dw_contact_id not like 'LCON-%')p1
where p1.user_id<>''
group by user_id) p0
LEFT JOIN :COMMDB.cust_contact_mapping p1
ON p1.user_id=p0 .user_id
;
update cust_contact_mapping_agi_CUR_I
set jdy_contact = jdy_contact_id
from (select ccm.contact_id,string_agg(ccm.partner_contact,',')||','||string_agg(jdy_contact_id,',') jdy_contact_id from p30_common.cust_contact_mapping ccm
inner join p30_common.d_jdy_contact_info p2
on ccm.contact_id =p2.dw_contact_id
group by ccm.contact_id) p1
where cust_contact_mapping_agi_CUR_I.contact_id=p1.contact_id;
/*从目标表中删除所有数据 cust_contact_mapping(客户联系方式映射) */
DELETE FROM :COMMDB.cust_contact_mapping
WHERE ETL_JOB=:ETLJOB;
/*将新增数据插入到目标表 */
;INSERT INTO :COMMDB.cust_contact_mapping (
user_id /*用户信息*/
,crm_contact /*CRM信息*/
,scrm_contact /*SCRM信息*/
,livechat_contact /*Livechat客户信息*/
,udesk_contact /*Udesk客户信息*/
,ccc_contact /*ccc客户信息*/
,jdy_contact /*简道云客户信息*/
,partner_contact /*partner客户信息*/
,contact_id /*联系编号*/
,src_sysname /*来源系统*/
,src_table /*来源表*/
,etl_job /*作业名称*/
,etl_first_dt /*最初入库时间*/
,etl_proc_dt /*本次入库时间*/
,etl_tx_dt /*作业运行时间*/
,etl_batch_no /*作业批次号*/
)
SELECT
P1.user_id /*用户信息*/
,P1.crm_contact /*CRM信息*/
,P1.scrm_contact /*SCRM信息*/
,P1.livechat_contact /*Livechat客户信息*/
,P1.udesk_contact /*Udesk客户信息*/
,P1.ccc_contact /*ccc客户信息*/
,P1.jdy_contact /*简道云客户信息*/
,P1.partner_contact /*partner客户信息*/
,P1.contact_id /*联系编号*/
,P1.src_sysname /*来源系统*/
,P1.src_table /*来源表*/
,P1.etl_job /*作业名称*/
,P1.etl_first_dt /*最初入库时间*/
,P1.etl_proc_dt /*本次入库时间*/
,P1.etl_tx_dt /*作业运行时间*/
,P1.etl_batch_no /*作业批次号*/
FROM cust_contact_mapping_agi_CUR_I P1
;
/*****程序结束退出 */
\q

View File

@ -136,7 +136,7 @@ contact_update_feign >> contact_update_load
api_contact_update_info_2218 = SSHOperator(
ssh_hook=sshHook,
task_id='api_contact_update_info_2218',
command='/data/airflow/etl/SA/run_sa.sh {{ ds_nodash }} {{ params.my_param }} >>/data/airflow/logs/run_psql_{{ds_nodash}}.log 2>&1 ',
command='/data/airflow/etl/SA/run_sa.sh {{ ds_nodash }} {{ params.my_param }} ',
params={'my_param':"S98_S_api_contact_update_info"},
depends_on_past=False,
retries=3,
@ -145,7 +145,7 @@ dag=dag)
api_contact_fields_4587 = SSHOperator(
ssh_hook=sshHook,
task_id='api_contact_fields_4587',
command='/data/airflow/etl/SA/run_sa.sh {{ ds_nodash }} {{ params.my_param }} >>/data/airflow/logs/run_psql_{{ds_nodash}}.log 2>&1 ',
command='/data/airflow/etl/SA/run_sa.sh {{ ds_nodash }} {{ params.my_param }} ',
params={'my_param':"S98_S_api_contact_fields"},
depends_on_past=False,
retries=3,
@ -154,7 +154,7 @@ dag=dag)
api_contact_event_meta_9651 = SSHOperator(
ssh_hook=sshHook,
task_id='api_contact_event_meta_9651',
command='/data/airflow/etl/SA/run_sa.sh {{ ds_nodash }} {{ params.my_param }} >>/data/airflow/logs/run_psql_{{ds_nodash}}.log 2>&1 ',
command='/data/airflow/etl/SA/run_sa.sh {{ ds_nodash }} {{ params.my_param }} ',
params={'my_param':"S98_S_api_contact_event_meta"},
depends_on_past=False,
retries=3,
@ -163,7 +163,7 @@ dag=dag)
api_contact_events_6043 = SSHOperator(
ssh_hook=sshHook,
task_id='api_contact_events_6043',
command='/data/airflow/etl/SA/run_sa.sh {{ ds_nodash }} {{ params.my_param }} >>/data/airflow/logs/run_psql_{{ds_nodash}}.log 2>&1 ',
command='/data/airflow/etl/SA/run_sa.sh {{ ds_nodash }} {{ params.my_param }} ',
params={'my_param':"S98_S_api_contact_events"},
depends_on_past=False,
retries=3,
@ -172,15 +172,106 @@ dag=dag)
api_contact_created_3850 = SSHOperator(
ssh_hook=sshHook,
task_id='api_contact_created_3850',
command='/data/airflow/etl/SA/run_sa.sh {{ ds_nodash }} {{ params.my_param }} >>/data/airflow/logs/run_psql_{{ds_nodash}}.log 2>&1 ',
command='/data/airflow/etl/SA/run_sa.sh {{ ds_nodash }} {{ params.my_param }} ',
params={'my_param':"S98_S_api_contact_created"},
depends_on_past=False,
retries=3,
dag=dag)
t01_scrm_leads = SSHOperator(
ssh_hook=sshHook,
task_id='t01_scrm_leads',
command='/data/airflow/etl/PDM/run_psql.sh {{ ds_nodash }} {{params.my_param}} ',
params={'my_param':"t01_scrm_leads_agi"},
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_psql.sh {{ ds_nodash }} {{params.my_param}} ',
params={'my_param':"t01_scrm_contact_agi"},
depends_on_past=False,
retries=3,
dag=dag)
d_scrm_contact = SSHOperator(
ssh_hook=sshHook,
task_id='d_scrm_contact',
command='/data/airflow/etl/COM/run_psql.sh {{ ds_nodash }} {{params.my_param}} ',
params={'my_param':"d_scrm_contact_agi"},
depends_on_past=False,
retries=3,
dag=dag)
cust_contact_mapping = SSHOperator(
ssh_hook=sshHook,
task_id='cust_contact_mapping',
command='/data/airflow/etl/COM/run_psql.sh {{ ds_nodash }} {{params.my_param}} ',
params={'my_param':"cust_contact_mapping_agi"},
depends_on_past=False,
retries=3,
dag=dag)
cust_leads = SSHOperator(
ssh_hook=sshHook,
task_id='cust_leads',
command='/data/airflow/etl/COM/run_psql.sh {{ ds_nodash }} {{params.my_param}} ',
params={'my_param':"cust_leads_agi"},
depends_on_past=False,
retries=3,
dag=dag)
cust_leads_detail = SSHOperator(
ssh_hook=sshHook,
task_id='cust_leads_detail',
command='/data/airflow/etl/COM/run_psql.sh {{ ds_nodash }} {{params.my_param}} ',
params={'my_param':"cust_leads_detail_agi"},
depends_on_past=False,
retries=3,
dag=dag)
cust_contact_info = SSHOperator(
ssh_hook=sshHook,
task_id='cust_contact_info',
command='/data/airflow/etl/COM/run_psql.sh {{ ds_nodash }} {{params.my_param}} ',
params={'my_param':"cust_contact_info_agi"},
depends_on_past=False,
retries=3,
dag=dag)
cust_all_info = SSHOperator(
ssh_hook=sshHook,
task_id='cust_all_info',
command='/data/airflow/etl/MART/run_psql.sh {{ ds_nodash }} {{params.my_param}} ',
params={'my_param':"cust_all_info_agi"},
depends_on_past=False,
retries=3,
dag=dag)
data_source_update = SSHOperator(
ssh_hook=sshHook,
task_id='data_source_update',
command='/data/airflow/etl/MART/run_psql.sh {{ ds_nodash }} {{params.my_param}} ',
params={'my_param':"data_source_update_agi"},
depends_on_past=False,
retries=3,
dag=dag)
cust_enagement_records = SSHOperator(
ssh_hook=sshHook,
task_id='cust_enagement_records',
command='/data/airflow/etl/MART/run_psql.sh {{ ds_nodash }} {{params.my_param}} ',
params={'my_param':"cust_enagement_records_agi"},
depends_on_past=False,
retries=3,
dag=dag)
contact_create_list_load >> api_contact_created_3850
contact_fields_load >> api_contact_fields_4587
contact_update_load >> api_contact_update_info_2218
api_contact_events_load >> api_contact_events_6043
contact_event_meta_load >> api_contact_event_meta_9651
api_contact_event_meta_9651 >> task_failed
api_contact_update_info_2218 >> t01_scrm_contact
api_contact_events_6043 >> t01_scrm_leads
t01_scrm_contact >> d_scrm_contact
d_scrm_contact >> cust_contact_mapping
t01_scrm_leads >> cust_leads
cust_leads >> cust_leads_detail
cust_contact_mapping >> cust_contact_info
cust_contact_info >> cust_leads_detail
cust_contact_info >> cust_all_info
cust_all_info >> data_source_update
cust_all_info >> cust_enagement_records
cust_enagement_records >> task_failed

View File

@ -0,0 +1,34 @@
DROP TABLE IF EXISTS p60_mart.data_source_update;
CREATE TABLE IF NOT EXISTS p60_mart.data_source_update (
date_layer varchar(20)
, data_area varchar(20)
, data_table varchar(200)
, data_rows bigint
, column_qty int
, last_upt_tm timestamp(0)
, Etl_Batch_No varchar(50)
, Etl_First_Dt timestamp(0)
, Etl_Job varchar(200)
, Etl_Proc_Dt timestamp(0)
, Etl_Tx_Dt timestamp(0)
, Src_Sysname varchar(50)
, Src_Table varchar(50)
,primary key( date_layer,data_table )
);
COMMENT ON COLUMN p60_mart.data_source_update.date_layer IS '数据层级';
COMMENT ON COLUMN p60_mart.data_source_update.data_area IS '数据领域';
COMMENT ON COLUMN p60_mart.data_source_update.data_table IS '数据表';
COMMENT ON COLUMN p60_mart.data_source_update.data_rows IS '数据行数';
COMMENT ON COLUMN p60_mart.data_source_update.column_qty IS '字段数';
COMMENT ON COLUMN p60_mart.data_source_update.last_upt_tm IS '最后更新日期';
COMMENT ON COLUMN p60_mart.data_source_update.Etl_Batch_No IS '作业批次号';
COMMENT ON COLUMN p60_mart.data_source_update.Etl_First_Dt IS '最初入库时间';
COMMENT ON COLUMN p60_mart.data_source_update.Etl_Job IS '作业名称';
COMMENT ON COLUMN p60_mart.data_source_update.Etl_Proc_Dt IS '本次入库时间';
COMMENT ON COLUMN p60_mart.data_source_update.Etl_Tx_Dt IS '作业运行时间';
COMMENT ON COLUMN p60_mart.data_source_update.Src_Sysname IS '来源系统';
COMMENT ON COLUMN p60_mart.data_source_update.Src_Table IS '来源表';
COMMENT ON TABLE p60_mart.data_source_update IS '数据源更新时间';

View File

@ -0,0 +1,355 @@
/***************************************************************************************************/
/*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 :data_source_update(数据源更新时间) */
/*Create Date:2024-06-17 11:29:47 */
/*SDM Developed By: dev */
/*SDM Developed Date: 2024-05-28 */
/*SDM Checked By: dev */
/*SDM Checked Date: 2024-06-17 */
/*Script Developed By: dev */
/*Script Checked By: dev */
/*Source table 1: p10_sa.s98_s_customer_event_meta */
/*Job Type: Inbound transform (Tier 1 to Tier 2) */
/*Target Table:data_source_update */
/*ETL Job Name:data_source_update */
/*ETL Frequency:Daily */
/*ETL Policy:F2 */
/********************************************************************************************/
/*******Main Section**************************************************************************/
\set ON_ERROR_STOP on
\set AUTOCOMMIT on
\timing on
/*创建临时表加载当前数据 */
CREATE TEMPORARY TABLE data_source_update_agi_CUR_I
( LIKE :MARTDB.data_source_update)
ON COMMIT PRESERVE ROWS;
/*创建临时表加载不同数据 */
CREATE TEMPORARY TABLE data_source_update_agi_INS
( LIKE :MARTDB.data_source_update)
ON COMMIT PRESERVE ROWS;
/*****************************************************************************************************/
/* GROUP 1:Source Table:s98_s_customer_event_meta*****************************************************/
/*****************************************************************************************************/
INSERT INTO data_source_update_agi_CUR_I (
date_layer /*数据层级*/
,data_area /*数据领域*/
,data_table /*数据表*/
,data_rows /*数据行数*/
,column_qty /*字段数*/
,last_upt_tm /*最后更新日期*/
,Etl_Batch_No /*作业批次号*/
,Etl_First_Dt /*最初入库时间*/
,Etl_Job /*作业名称*/
,Etl_Proc_Dt /*本次入库时间*/
,Etl_Tx_Dt /*作业运行时间*/
,Src_Sysname /*来源系统*/
,Src_Table /*来源表*/
)
SELECT
'Data Source' /*date_layer*/
,case when p0 .data_table like '%scrm%' then 'SCRM'
when p0.data_table like '%custom%' then 'SCRM'
when p0.data_table like '%crm%' then 'CRM'
when p0.data_table like '%livechat%' then 'LiveChat'
when p0.data_table like '%udesk%'
then 'Udesk'
else 'All' end /*data_area*/
,coalesce(p0.data_table,'') /*data_table*/
,coalesce(p0.row_count,0) /*data_rows*/
,coalesce(p0.columns_qty,0) /*column_qty*/
,p0.last_upt_tm /*last_upt_tm*/
,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_customer_event_meta',1,3) /*Src_Sysname*/
,'s98_s_customer_event_meta' /*Src_Table*/
FROM (select 's98_s_crm_account' data_table,count(*) row_count ,max(etl_tx_dt) last_upt_tm , 41 columns_qty from p12_sfull.s98_s_crm_account
union all
select 's98_s_crm_contact_ccp' data_table,count(*) row_count ,max(etl_tx_dt) last_upt_tm , 4 columns_qty from p12_sfull.s98_s_crm_contact_ccp
union all
select 's98_s_crm_contact_part' data_table,count(*) row_count ,max(etl_tx_dt) last_upt_tm , 57 columns_qty from p12_sfull.s98_s_crm_contact_part
union all
select 's98_s_crm_opp' data_table,count(*) row_count ,max(etl_tx_dt) last_upt_tm , 50 columns_qty from p12_sfull.s98_s_crm_opp
union all
select 's98_s_crm_raw_leads' data_table,count(*) row_count ,max(etl_tx_dt) last_upt_tm , 12 columns_qty from p12_sfull.s98_s_crm_raw_leads
union all
select 's98_s_custom_events_activity_submit' data_table,count(*) row_count ,max(etl_tx_dt) last_upt_tm , 15 columns_qty from p12_sfull.s98_s_custom_events_activity_submit
union all
select 's98_s_customer_event_meta' data_table,count(*) row_count ,max(etl_tx_dt) last_upt_tm , 4 columns_qty from p12_sfull.s98_s_customer_event_meta
union all
select 's98_s_customer_events' data_table,count(*) row_count ,max(etl_tx_dt) last_upt_tm , 12 columns_qty from p12_sfull.s98_s_customer_events
union all
select 's98_s_customer_events_add_user' data_table,count(*) row_count ,max(etl_tx_dt) last_upt_tm , 17 columns_qty from p12_sfull.s98_s_customer_events_add_user
union all
select 's98_s_customer_events_c_minipro_page_view' data_table,count(*) row_count ,max(etl_tx_dt) last_upt_tm , 25 columns_qty from p12_sfull.s98_s_customer_events_c_minipro_page_view
union all
select 's98_s_customer_events_click_link_in_page' data_table,count(*) row_count ,max(etl_tx_dt) last_upt_tm , 27 columns_qty from p12_sfull.s98_s_customer_events_click_link_in_page
union all
select 's98_s_customer_events_lastupdated' data_table,count(*) row_count ,max(etl_tx_dt) last_upt_tm , 28 columns_qty from p12_sfull.s98_s_customer_events_lastupdated
union all
select 's98_s_customer_events_open_app' data_table,count(*) row_count ,max(etl_tx_dt) last_upt_tm , 27 columns_qty from p12_sfull.s98_s_customer_events_open_app
union all
select 's98_s_customer_events_open_content_page' data_table,count(*) row_count ,max(etl_tx_dt) last_upt_tm , 27 columns_qty from p12_sfull.s98_s_customer_events_open_content_page
union all
select 's98_s_customer_events_open_page' data_table,count(*) row_count ,max(etl_tx_dt) last_upt_tm , 33 columns_qty from p12_sfull.s98_s_customer_events_open_page
union all
select 's98_s_customer_events_submit_form' data_table,count(*) row_count ,max(etl_tx_dt) last_upt_tm , 25 columns_qty from p12_sfull.s98_s_customer_events_submit_form
union all
select 's98_s_customer_events_subscribe' data_table,count(*) row_count ,max(etl_tx_dt) last_upt_tm , 13 columns_qty from p12_sfull.s98_s_customer_events_subscribe
union all
select 's98_s_customer_events_wechat_scan' data_table,count(*) row_count ,max(etl_tx_dt) last_upt_tm , 13 columns_qty from p12_sfull.s98_s_customer_events_wechat_scan
union all
select 's98_s_livechat' data_table,count(*) row_count ,max(etl_tx_dt) last_upt_tm , 98 columns_qty from p12_sfull.s98_s_livechat
union all
select 's98_s_scrm_contact' data_table,count(*) row_count ,max(etl_tx_dt) last_upt_tm , 133 columns_qty from p12_sfull.s98_s_scrm_contact
union all
select 's98_s_scrm_contact_af0912' data_table,count(*) row_count ,max(etl_tx_dt) last_upt_tm , 11 columns_qty from p12_sfull.s98_s_scrm_contact_af0912
union all
select 's98_s_scrm_contact_lastupdated' data_table,count(*) row_count ,max(etl_tx_dt) last_upt_tm , 133 columns_qty from p12_sfull.s98_s_scrm_contact_lastupdated
union all
select 's98_s_scrm_contact_merge' data_table,count(*) row_count ,max(etl_tx_dt) last_upt_tm , 20 columns_qty from p12_sfull.s98_s_scrm_contact_merge
union all
select 's98_s_scrm_contact_merge_af0912' data_table,count(*) row_count ,max(etl_tx_dt) last_upt_tm , 16 columns_qty from p12_sfull.s98_s_scrm_contact_merge_af0912
union all
select 's98_s_scrm_contact_update_af0912' data_table,count(*) row_count ,max(etl_tx_dt) last_upt_tm , 11 columns_qty from p12_sfull.s98_s_scrm_contact_update_af0912
union all
select 's98_s_scrm_leads_af0912' data_table,count(*) row_count ,max(etl_tx_dt) last_upt_tm , 13 columns_qty from p12_sfull.s98_s_scrm_leads_af0912
union all
select 's98_s_udesk_record' data_table,count(*) row_count ,max(etl_tx_dt) last_upt_tm , 21 columns_qty from p12_sfull.s98_s_udesk_record
) p0
;
/*****************************************************************************************************/
/* GROUP 2:Source Table:s98_s_customer_event_meta*****************************************************/
/*****************************************************************************************************/
INSERT INTO data_source_update_agi_CUR_I (
date_layer /*数据层级*/
,data_area /*数据领域*/
,data_table /*数据表*/
,data_rows /*数据行数*/
,column_qty /*字段数*/
,last_upt_tm /*最后更新日期*/
,Etl_Batch_No /*作业批次号*/
,Etl_First_Dt /*最初入库时间*/
,Etl_Job /*作业名称*/
,Etl_Proc_Dt /*本次入库时间*/
,Etl_Tx_Dt /*作业运行时间*/
,Src_Sysname /*来源系统*/
,Src_Table /*来源表*/
)
SELECT
'COM' /*date_layer*/
,case when p0 .data_table like '%scrm%' then 'SCRM'
when p0.data_table like '%customer%' then 'SCRM'
when p0.data_table like '%crm%' then 'CRM'
when p0.data_table like '%livechat%' then 'LiveChat'
when p0.data_table like '%udesk%'
then 'Udesk'
else 'All' end /*data_area*/
,coalesce(p0.data_table) /*data_table*/
,coalesce(p0.row_count) /*data_rows*/
,coalesce(p0.columns_qty) /*column_qty*/
,p0.last_upt_tm /*last_upt_tm*/
,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_customer_event_meta',1,3) /*Src_Sysname*/
,'s98_s_customer_event_meta' /*Src_Table*/
FROM (select 'cust_contact_info' data_table,count(*) row_count ,max(etl_proc_dt) last_upt_tm , 51 columns_qty from p30_common.cust_contact_info
union all
select 'cust_contact_mapping' data_table,count(*) row_count ,max(etl_proc_dt) last_upt_tm , 13 columns_qty from p30_common.cust_contact_mapping
union all
select 'cust_leads' data_table,count(*) row_count ,max(etl_proc_dt) last_upt_tm , 10 columns_qty from p30_common.cust_leads
union all
select 'cust_leads_detail' data_table,count(*) row_count ,max(etl_proc_dt) last_upt_tm , 10 columns_qty from p30_common.cust_leads_detail
union all
select 'd_crm_contact' data_table,count(*) row_count ,max(etl_proc_dt) last_upt_tm , 65 columns_qty from p30_common.d_crm_contact
union all
select 'd_livechat_contact' data_table,count(*) row_count ,max(etl_proc_dt) last_upt_tm , 19 columns_qty from p30_common.d_livechat_contact
union all
select 'd_scrm_contact' data_table,count(*) row_count ,max(etl_proc_dt) last_upt_tm , 20 columns_qty from p30_common.d_scrm_contact
union all
select 'd_udesk_contact' data_table,count(*) row_count ,max(etl_proc_dt) last_upt_tm , 16 columns_qty from p30_common.d_udesk_contact ) p0
;
/*****************************************************************************************************/
/* GROUP 3:Source Table:s98_s_customer_event_meta*****************************************************/
/*****************************************************************************************************/
INSERT INTO data_source_update_agi_CUR_I (
date_layer /*数据层级*/
,data_area /*数据领域*/
,data_table /*数据表*/
,data_rows /*数据行数*/
,column_qty /*字段数*/
,last_upt_tm /*最后更新日期*/
,Etl_Batch_No /*作业批次号*/
,Etl_First_Dt /*最初入库时间*/
,Etl_Job /*作业名称*/
,Etl_Proc_Dt /*本次入库时间*/
,Etl_Tx_Dt /*作业运行时间*/
,Src_Sysname /*来源系统*/
,Src_Table /*来源表*/
)
SELECT
'MART' /*date_layer*/
,case when p0 .data_table like '%scrm%' then 'SCRM'
when p0.data_table like '%customer%' then 'SCRM'
when p0.data_table like '%crm%' then 'CRM'
when p0.data_table like '%livechat%' then 'LiveChat'
when p0.data_table like '%udesk%'
then 'Udesk'
else 'All' end /*data_area*/
,coalesce(p0.data_table) /*data_table*/
,coalesce(p0.row_count,0) /*data_rows*/
,coalesce(p0.columns_qty,0) /*column_qty*/
,p0.last_upt_tm /*last_upt_tm*/
,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_customer_event_meta',1,3) /*Src_Sysname*/
,'s98_s_customer_event_meta' /*Src_Table*/
FROM (select 'cust_all_info' data_table,count(*) row_count ,max(etl_proc_dt) last_upt_tm , 33 columns_qty from p60_mart.cust_all_info
union all
select 'cust_enagement_records' data_table,count(*) row_count ,max(etl_proc_dt) last_upt_tm , 13 columns_qty from p60_mart.cust_enagement_records
union all
select 'v_dq_result' data_table,count(*) row_count ,max(check_run_date) last_upt_tm , 7 columns_qty from p51_dqc.dq_check_result) p0
;
/*将不同数据插入到临时表 */
;INSERT INTO data_source_update_agi_INS (
data_area /*数据领域*/
,data_rows /*数据行数*/
,column_qty /*字段数*/
,last_upt_tm /*最后更新日期*/
,date_layer /*数据层级*/
,data_table /*数据表*/
,Etl_Batch_No /*作业批次号*/
,Etl_First_Dt /*最初入库时间*/
,Etl_Job /*作业名称*/
,Etl_Proc_Dt /*本次入库时间*/
,Etl_Tx_Dt /*作业运行时间*/
,Src_Sysname /*来源系统*/
,Src_Table /*来源表*/
)
SELECT
P1.data_area /*数据领域*/
,P1.data_rows /*数据行数*/
,P1.column_qty /*字段数*/
,P1.last_upt_tm /*最后更新日期*/
,P1.date_layer /*数据层级*/
,P1.data_table /*数据表*/
,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 data_source_update_agi_CUR_I P1
LEFT JOIN :MARTDB.data_source_update P2
ON P1.data_area = P2.data_area
AND P1.data_rows = P2.data_rows
AND P1.column_qty = P2.column_qty
AND P1.last_upt_tm = P2.last_upt_tm
AND P1.date_layer = P2.date_layer
AND P1.data_table = P2.data_table
WHERE P2.data_area IS NULL
OR P2.data_rows IS NULL
OR P2.column_qty IS NULL
OR P2.last_upt_tm IS NULL
OR P2.date_layer IS NULL
OR P2.data_table IS NULL
;
/*将新增数据插入到目标表 */
;INSERT INTO :MARTDB.data_source_update (
data_area /*数据领域*/
,data_rows /*数据行数*/
,column_qty /*字段数*/
,last_upt_tm /*最后更新日期*/
,date_layer /*数据层级*/
,data_table /*数据表*/
,Etl_Batch_No /*作业批次号*/
,Etl_First_Dt /*最初入库时间*/
,Etl_Job /*作业名称*/
,Etl_Proc_Dt /*本次入库时间*/
,Etl_Tx_Dt /*作业运行时间*/
,Src_Sysname /*来源系统*/
,Src_Table /*来源表*/
)
SELECT
P1.data_area /*数据领域*/
,P1.data_rows /*数据行数*/
,P1.column_qty /*字段数*/
,P1.last_upt_tm /*最后更新日期*/
,P1.date_layer /*数据层级*/
,P1.data_table /*数据表*/
,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 data_source_update_agi_INS P1
ON CONFLICT ( date_layer,data_table)
DO UPDATE SET
date_layer=excluded.date_layer
,data_table=excluded.data_table
,data_area=excluded.data_area
,data_rows=excluded.data_rows
,column_qty=excluded.column_qty
,last_upt_tm=excluded.last_upt_tm
,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