diff --git a/dev/workflow/TK_Cust/smart_ccc_dynamic_email_ls/dynamic_data_export/dynamic_data_export.py b/dev/workflow/TK_Cust/smart_ccc_dynamic_email_ls/dynamic_data_export/dynamic_data_export.py new file mode 100644 index 0000000..58e6779 --- /dev/null +++ b/dev/workflow/TK_Cust/smart_ccc_dynamic_email_ls/dynamic_data_export/dynamic_data_export.py @@ -0,0 +1,208 @@ +import os +import pandas as pd +from openpyxl import Workbook +import argparse +from sqlalchemy import create_engine +from sqlalchemy.exc import SQLAlchemyError +from psycopg2 import connect, extras +import datetime +import psycopg2 +from sqlalchemy import text +import random + +def export_view_to_csv(view_name, output_file, where_condition, db_config, output_path): + + + # 检查环境变量是否都已设置 + for key in db_config: + if db_config[key] is None: + raise ValueError(f"Environment variable {key} is not set.") + + # 构建数据库连接字符串 + db_uri = f"postgresql://{db_config['user']}:{db_config['password']}@{db_config['host']}:{db_config['port']}/{db_config['dbname']}" + + # 创建SQLAlchemy引擎 + engine = create_engine(db_uri) + + if where_condition is None or where_condition.strip() == "": + where_condition = " WHERE 1=1 " + + # 构建 SQL 查询语句,选择视图的所有列 + query = f""" + SELECT * FROM {view_name} {where_condition}; + """ + + # 使用 pandas 读取 SQL 查询结果 + df = pd.read_sql_query(query, engine) + + # 指定保存 CSV 文件的完整路径 + file_path = os.path.join(output_path, output_file) + + # 检查output_path目录是否存在,如果不存在则创建 + if not os.path.exists(output_path): + os.makedirs(output_path) + + # 使用 pandas 的 to_csv 方法保存数据到 CSV 文件 + df.to_csv(file_path, index=False) +def main(mail_task_id, dops_db_config, mpp_db_config, send_from): + mail_task_result = get_email_info(mail_task_id, dops_db_config) + print("邮件任务信息:", mail_task_result) + if mail_task_result == None: + print(f'未找到邮件任务:{mail_task_id}') + exit() + mail_task = mail_task_result[0] + view_name = mail_task['table_name'] + send_to = mail_task['send_to'] + title = mail_task['title'] + content = mail_task['content'] + where_condition = mail_task['condition'] + output_file = mail_task['file_name'] + output_path = '/data/dops/app/dp-mail/tempFile' + + # 获取当前时间 + now = datetime.datetime.now() + timestampid = now.strftime("%Y%m%d%H%M%S") + current_time = now.strftime("%Y-%m-%d %H:%M:%S") + random_part = '{:04d}'.format(random.randint(0, 9999)) + # 组合时间戳和随机数 + mail_id = f"{timestampid}{random_part}" + title = title.replace('{date}', current_time) + output_file = output_file.replace('{time}', current_time) + + file_dict_path = os.path.join(output_path, mail_id) + + export_view_to_csv(view_name, output_file, where_condition, mpp_db_config, file_dict_path) + # export_view_to_excel(view_name, output_file, where_condition, mpp_db_config, file_dict_path) + insert_mail_record(send_from,send_to, title, content, dops_db_config, mail_id, attachment=output_file) +def insert_mail_record(send_from, send_to, subject, mail_content, db_config, mail_id, **kwargs): + + # 从db_config创建数据库URI + db_uri = f"postgresql://{db_config['user']}:{db_config['password']}@{db_config['host']}:{db_config['port']}/{db_config['dbname']}" + + # 创建SQLAlchemy引擎 + engine = create_engine(db_uri) + + # 默认值 + send_cc = kwargs.get('send_cc', None) + send_bcc = kwargs.get('send_bcc', None) + attachment = kwargs.get('attachment', None) + send_status = kwargs.get('send_status', '0') + src_system = kwargs.get('src_system', None) + create_tm = kwargs.get('create_tm', datetime.datetime.now()) + create_person = kwargs.get('create_person', None) + upt_tm = kwargs.get('upt_tm', datetime.datetime.now()) + upt_person = kwargs.get('upt_person', None) + remark = kwargs.get('remark', None) + + # 创建一个新的邮件队列记录 + new_record = { + 'mail_id': mail_id, + 'send_from': send_from, + 'send_to': send_to, + 'send_cc': send_cc, + 'send_bcc': send_bcc, + 'subject': subject, + 'mail_content': mail_content, + 'attachment': attachment, + 'send_status': send_status, + 'src_system': src_system, + 'create_tm': create_tm, + 'create_person': create_person, + 'upt_tm': upt_tm, + 'upt_person': upt_person, + 'remark': remark, + } + print(f'插入邮件队列记录:{new_record}') + + # 使用with语句确保Connection在操作完成后被关闭 + with engine.connect() as connection: + try: + # 插入记录 + insert_stmt = text(""" + INSERT INTO dp_email.mail_queue ( + id, send_from, send_to, send_cc, send_bcc, subject, + mail_content, attachment, send_status, src_system, + create_tm, create_person, upt_tm, upt_person, remark + ) VALUES ( + :mail_id, :send_from, :send_to, :send_cc, :send_bcc, :subject, + :mail_content, :attachment, :send_status, :src_system, + :create_tm, :create_person, :upt_tm, :upt_person, :remark + ) + """) + + connection.execute(insert_stmt, new_record) + + except Exception as e: + raise e + + +def get_email_info(mail_task_id, dops_db_config): + + print(f'获取id为:{mail_task_id} 邮件任务信息') + # 数据库连接参数 + db_params = dops_db_config + + # 连接数据库 + conn = psycopg2.connect(**db_params) + + # 创建游标 + cur = conn.cursor(cursor_factory=psycopg2.extras.RealDictCursor) + + # 执行查询语句 + query = """ + SELECT + mail_task_id + , send_to + , title + , content + , table_name + , condition + , file_name + , valid_ind + , sort + FROM dp_custom.s_v_email_distribute + WHERE mail_task_id = %s and valid_ind='1'; + """ + cur.execute(query, (mail_task_id,)) + + # 获取查询结果 + result = cur.fetchall() + + # 关闭游标和连接 + cur.close() + conn.close() + + return result + +# 使用函数 +# mail_task_id = "your_mail_task_id" +# info = get_email_info(mail_task_id) +# print(info) + +if __name__ == "__main__": + # 以下内容根据各环境不同,手动配置 + mpp_db_config = { + 'dbname': os.getenv('DATABASENAME'), + 'user': os.getenv('USERNAME'), + 'password': os.getenv('PGPASSWORD'), + 'host': os.getenv('DBIP'), + 'port': os.getenv('PORT') + } + + dops_db_config = { + 'dbname': 'dataops_db', + 'user': os.getenv('USERNAME'), + 'password': os.getenv('PGPASSWORD'), + 'host': os.getenv('DBIP'), + 'port': os.getenv('PORT') + } + + send_from = 'tek_newsletter@163.com' + + # 创建命令行参数解析器 + parser = argparse.ArgumentParser(description="Export PostgreSQL Data to Excel") + parser.add_argument("mail_task_id", help="ID of the Mail Task to export") + args = parser.parse_args() + + # 调用main函数,传递命令行参数 + main(args.mail_task_id, dops_db_config, mpp_db_config, send_from) \ No newline at end of file diff --git a/dev/workflow/TK_Cust/smart_ccc_dynamic_email_ls/smartccc工单信息集成/f_ccc_work_ticket_integ.sql b/dev/workflow/TK_Cust/smart_ccc_dynamic_email_ls/smartccc工单信息集成/f_ccc_work_ticket_integ.sql new file mode 100644 index 0000000..6546da7 --- /dev/null +++ b/dev/workflow/TK_Cust/smart_ccc_dynamic_email_ls/smartccc工单信息集成/f_ccc_work_ticket_integ.sql @@ -0,0 +1,116 @@ + +DROP TABLE IF EXISTS p30_common.f_ccc_work_ticket_integ; +CREATE TABLE IF NOT EXISTS p30_common.f_ccc_work_ticket_integ ( + PEXTENSION_CODE varchar(20) + , PEXTENSION varchar(20) + , LAST_NAME varchar(20) + , SUFFIX varchar(20) + , COMPANY_NAME varchar(50) + , JOB_TITLE varchar(20) + , CITY varchar(20) + , STATE_COUNTY_LOCATION varchar(20) + , COUNTRY_CODE varchar(20) + , POSTAL_CODE varchar(20) + , CONTACT_MOBILE_NUMBER varchar(20) + , EMAIL_ADDRESS varchar(50) + , REQUEST_A_DEMO varchar(10) + , REQUEST_A_QUOTE varchar(10) + , HAMCAM varchar(10) + , PURCHASE_INTENT varchar(10) + , COMMENTS text + , INDUSTRY varchar(20) + , CCP_PRODUCT_INTEREST_01 varchar(20) + , CCP_APP_01_5 varchar(20) + , LEAD_PRODUCTS_01_5 varchar(20) + , PERMISSION_PHONE varchar(10) + , PERMISSION_PHONE_DATE timestamp(0) + , PERMISSION_EMAIL varchar(10) + , PERMISSION_EMAIL_DATE timestamp(0) + , PERMISSION_MAIL varchar(10) + , PERMISSION_MAIL_DATE timestamp(0) + , PERMISSION_SMS varchar(10) + , PERMISSION_SMS_DATE timestamp(0) + , AGREES_TO_PRIVACY_POLICY varchar(10) + , PORTAL_TERMS_AGREEMENT_DATE timestamp(0) + , CONSENT_TO_COLLECT_PERSONAL_INFO varchar(10) + , CONSENT_TO_COLLECT_PERSONAL_INFO_DATE timestamp(0) + , MARKETING_CONSENT varchar(10) + , MARKETING_CONSENT_DATE timestamp(0) + , MEANS_OF_CONSENT varchar(10) + , SOURCE_OF_CONSENT varchar(10) + , VERSION_OF_PRIVACY_NOTICE varchar(10) + , RECORD_OF_CONSENT varchar(10) + , EXACT_CONSENT_LANGUAGE varchar(10) + , BRAND_TEKTRONIX varchar(10) + , BRAND_SSO varchar(10) + , BRAND_KEITHLEY varchar(10) + , EMAIL_PREFERENCE varchar(10) + , Src_Sysname varchar(50) + , Etl_Job varchar(200) + , Src_Table varchar(50) + , Etl_Tx_Dt timestamp(0) + , Etl_First_Dt timestamp(0) + , Etl_Proc_Dt timestamp(0) + , Etl_Batch_No varchar(50) + , second_mobile_number varchar(20) + , company_phone_number varchar(20) + , district varchar(50) + ,primary key( SUFFIX ) +); + + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.PEXTENSION_CODE IS '来源代码'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.PEXTENSION IS '来源'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.LAST_NAME IS '姓名'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.SUFFIX IS '工单ID'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.COMPANY_NAME IS '公司名称'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.JOB_TITLE IS '职位'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.CITY IS '城市'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.STATE_COUNTY_LOCATION IS '省份'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.COUNTRY_CODE IS '国家'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.POSTAL_CODE IS '邮编'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.CONTACT_MOBILE_NUMBER IS '电话'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.EMAIL_ADDRESS IS '邮箱'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.REQUEST_A_DEMO IS 'demo标志'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.REQUEST_A_QUOTE IS '引用标志'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.HAMCAM IS '账户管理员标志'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.PURCHASE_INTENT IS '购买意向'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.COMMENTS IS '备注'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.INDUSTRY IS '行业'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.CCP_PRODUCT_INTEREST_01 IS '产品偏好'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.CCP_APP_01_5 IS '应用'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.LEAD_PRODUCTS_01_5 IS '产品型号'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.PERMISSION_PHONE IS '电话授权标志'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.PERMISSION_PHONE_DATE IS '电话授权时间'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.PERMISSION_EMAIL IS '电子邮件授权标志'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.PERMISSION_EMAIL_DATE IS '电子邮件授权时间'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.PERMISSION_MAIL IS '邮件授权标志'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.PERMISSION_MAIL_DATE IS '邮件授权时间'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.PERMISSION_SMS IS 'SMS授权标志'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.PERMISSION_SMS_DATE IS 'SMS授权时间'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.AGREES_TO_PRIVACY_POLICY IS '个人信息授权标志'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.PORTAL_TERMS_AGREEMENT_DATE IS '协议授权时间'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.CONSENT_TO_COLLECT_PERSONAL_INFO IS '个人信息收集标志'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.CONSENT_TO_COLLECT_PERSONAL_INFO_DATE IS '个人信息收集时间'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.MARKETING_CONSENT IS 'MARKETING_CONSENT'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.MARKETING_CONSENT_DATE IS 'MARKETING_CONSENT_DATE'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.MEANS_OF_CONSENT IS 'MEANS_OF_CONSENT'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.SOURCE_OF_CONSENT IS 'SOURCE_OF_CONSENT'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.VERSION_OF_PRIVACY_NOTICE IS 'VERSION_OF_PRIVACY_NOTICE'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.RECORD_OF_CONSENT IS 'RECORD_OF_CONSENT'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.EXACT_CONSENT_LANGUAGE IS 'EXACT_CONSENT_LANGUAGE'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.BRAND_TEKTRONIX IS 'BRAND_TEKTRONIX'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.BRAND_SSO IS 'BRAND_SSO'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.BRAND_KEITHLEY IS 'BRAND_KEITHLEY'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.EMAIL_PREFERENCE IS 'EMAIL_PREFERENCE'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.Src_Sysname IS '来源系统'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.Etl_Job IS '作业名称'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.Src_Table IS '来源表'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.Etl_Tx_Dt IS '作业运行时间'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.Etl_First_Dt IS '最初入库时间'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.Etl_Proc_Dt IS '本次入库时间'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.Etl_Batch_No IS '作业批次号'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.second_mobile_number IS '第二手机号'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.company_phone_number IS '固话号'; + COMMENT ON COLUMN p30_common.f_ccc_work_ticket_integ.district IS '地区'; + +COMMENT ON TABLE p30_common.f_ccc_work_ticket_integ IS 'smartccc工单信息集成'; \ No newline at end of file diff --git a/dev/workflow/TK_Cust/smart_ccc_dynamic_email_ls/smartccc工单信息集成/f_ccc_work_ticket_integ_agi.sql b/dev/workflow/TK_Cust/smart_ccc_dynamic_email_ls/smartccc工单信息集成/f_ccc_work_ticket_integ_agi.sql new file mode 100644 index 0000000..8ff5976 --- /dev/null +++ b/dev/workflow/TK_Cust/smart_ccc_dynamic_email_ls/smartccc工单信息集成/f_ccc_work_ticket_integ_agi.sql @@ -0,0 +1,816 @@ +/***************************************************************************************************/ +/*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 :f_ccc_work_ticket_integ(smartccc工单信息集成) */ +/*Create Date:2025-03-17 14:18:33 */ +/*SDM Developed By: dev */ +/*SDM Developed Date: 2024-07-09 */ +/*SDM Checked By: dev */ +/*SDM Checked Date: 2025-03-17 */ +/*Script Developed By: dev */ +/*Script Checked By: dev */ +/*Source table 1: :PDMDB.t00_china_city_pnum */ +/*Source table 2: :PDMDB.t01_ccc_cust_info */ +/*Source table 3: :PDMDB.t00_china_city_info */ +/*Source table 4: :PDMDB.t01_ccc_work_ticket_info */ +/*Job Type: Inbound transform (Tier 1 to Tier 2) */ +/*Target Table:f_ccc_work_ticket_integ */ +/*ETL Job Name:f_ccc_work_ticket_integ */ +/*ETL Frequency:Daily */ +/*ETL Policy:F2 */ +/********************************************************************************************/ +/*******Main Section**************************************************************************/ +\set ON_ERROR_STOP on +\set AUTOCOMMIT on +\timing on + + + +/*创建临时表加载当前数据 */ +CREATE TEMPORARY TABLE f_ccc_work_ticket_integ_agi_CUR_I + ( LIKE :COMMDB.f_ccc_work_ticket_integ) +ON COMMIT PRESERVE ROWS; + + + +/*创建临时表加载不同数据 */ +CREATE TEMPORARY TABLE f_ccc_work_ticket_integ_agi_INS +( LIKE :COMMDB.f_ccc_work_ticket_integ) +ON COMMIT PRESERVE ROWS; + + +/*****************************************************************************************************/ +/* GROUP 1:Source Table:t01_ccc_work_ticket_info******************************************************/ +/*****************************************************************************************************/ + +INSERT INTO f_ccc_work_ticket_integ_agi_CUR_I ( + PEXTENSION_CODE /*来源代码*/ + ,PEXTENSION /*来源*/ + ,LAST_NAME /*姓名*/ + ,SUFFIX /*工单ID*/ + ,COMPANY_NAME /*公司名称*/ + ,JOB_TITLE /*职位*/ + ,CITY /*城市*/ + ,STATE_COUNTY_LOCATION /*省份*/ + ,COUNTRY_CODE /*国家*/ + ,POSTAL_CODE /*邮编*/ + ,CONTACT_MOBILE_NUMBER /*电话*/ + ,EMAIL_ADDRESS /*邮箱*/ + ,REQUEST_A_DEMO /*demo标志*/ + ,REQUEST_A_QUOTE /*引用标志*/ + ,HAMCAM /*账户管理员标志*/ + ,PURCHASE_INTENT /*购买意向*/ + ,COMMENTS /*备注*/ + ,INDUSTRY /*行业*/ + ,CCP_PRODUCT_INTEREST_01 /*产品偏好*/ + ,CCP_APP_01_5 /*应用*/ + ,LEAD_PRODUCTS_01_5 /*产品型号*/ + ,PERMISSION_PHONE /*电话授权标志*/ + ,PERMISSION_PHONE_DATE /*电话授权时间*/ + ,PERMISSION_EMAIL /*电子邮件授权标志*/ + ,PERMISSION_EMAIL_DATE /*电子邮件授权时间*/ + ,PERMISSION_MAIL /*邮件授权标志*/ + ,PERMISSION_MAIL_DATE /*邮件授权时间*/ + ,PERMISSION_SMS /*SMS授权标志*/ + ,PERMISSION_SMS_DATE /*SMS授权时间*/ + ,AGREES_TO_PRIVACY_POLICY /*个人信息授权标志*/ + ,PORTAL_TERMS_AGREEMENT_DATE /*协议授权时间*/ + ,CONSENT_TO_COLLECT_PERSONAL_INFO /*个人信息收集标志*/ + ,CONSENT_TO_COLLECT_PERSONAL_INFO_DATE /*个人信息收集时间*/ + ,MARKETING_CONSENT /*MARKETING_CONSENT*/ + ,MARKETING_CONSENT_DATE /*MARKETING_CONSENT_DATE*/ + ,MEANS_OF_CONSENT /*MEANS_OF_CONSENT*/ + ,SOURCE_OF_CONSENT /*SOURCE_OF_CONSENT*/ + ,VERSION_OF_PRIVACY_NOTICE /*VERSION_OF_PRIVACY_NOTICE*/ + ,RECORD_OF_CONSENT /*RECORD_OF_CONSENT*/ + ,EXACT_CONSENT_LANGUAGE /*EXACT_CONSENT_LANGUAGE*/ + ,BRAND_TEKTRONIX /*BRAND_TEKTRONIX*/ + ,BRAND_SSO /*BRAND_SSO*/ + ,BRAND_KEITHLEY /*BRAND_KEITHLEY*/ + ,EMAIL_PREFERENCE /*EMAIL_PREFERENCE*/ + ,Src_Sysname /*来源系统*/ + ,Etl_Job /*作业名称*/ + ,Src_Table /*来源表*/ + ,Etl_Tx_Dt /*作业运行时间*/ + ,Etl_First_Dt /*最初入库时间*/ + ,Etl_Proc_Dt /*本次入库时间*/ + ,Etl_Batch_No /*作业批次号*/ + ,second_mobile_number /*第二手机号*/ + ,company_phone_number /*固话号*/ + ,district /*地区*/ + ) +SELECT + case when coalesce(p0.start_form::json->>'formName','') ='选型报价_Outbound' then '449662X449662' + else coalesce(case when p0."source" ='0' then '305972X317938' + when p0."source" ='11' then '445769X445769' + else '401890X401890' end,'') end /*PEXTENSION_CODE*/ + ,coalesce(p1."source",'') /*PEXTENSION*/ + ,COALESCE(TRIM(CAST(p0.customer_name AS varchar(20))),'') /*LAST_NAME*/ + ,coalesce(p0.id,'') /*SUFFIX*/ + ,coalesce((SELECT jsonb_extract_path_text(j, 'value') + FROM jsonb_array_elements((p0.start_form::json -> 'fields')::jsonb) j + WHERE jsonb_extract_path_text(j, 'id') = '305038'),'')||(case when coalesce((SELECT jsonb_extract_path_text(j, 'value') + FROM jsonb_array_elements((p0.start_form::json -> 'fields')::jsonb) j + WHERE jsonb_extract_path_text(j, 'id') = '297756'),'') = '' then '' else ',Enduser: '||coalesce((SELECT jsonb_extract_path_text(j, 'value') + FROM jsonb_array_elements((p0.start_form::json -> 'fields')::jsonb) j + WHERE jsonb_extract_path_text(j, 'id') = '297756'),'') end) /*COMPANY_NAME*/ + ,coalesce((SELECT jsonb_extract_path_text(j, 'value') + FROM jsonb_array_elements(p1.customize::jsonb) j + WHERE jsonb_extract_path_text(j, 'name') = '职位'),'') /*JOB_TITLE*/ + ,coalesce(p3.city_name,(SELECT jsonb_extract_path_text(j, 'value') + FROM jsonb_array_elements((p0.start_form::json -> 'fields')::jsonb) j + WHERE jsonb_extract_path_text(j, 'id') = '317832'),(SELECT jsonb_extract_path_text(j, 'value') + FROM jsonb_array_elements((p0.start_form::json -> 'fields')::jsonb) j + WHERE jsonb_extract_path_text(j, 'id') = '317748'),(SELECT jsonb_extract_path_text(j, 'value') + FROM jsonb_array_elements((p0.start_form::json -> 'fields')::jsonb) j + WHERE jsonb_extract_path_text(j, 'id') = '297755'),'') /*CITY*/ + ,coalesce(p3.prov_name,p2.prov_name,'') /*STATE_COUNTY_LOCATION*/ + ,'CN' /*COUNTRY_CODE*/ + ,coalesce(p3.postnumber,p2.postalcode,'') /*POSTAL_CODE*/ + ,coalesce(find_first_phone_number(replace(replace(replace(p1.tel,'"',''),'[','{'),']','}')::text[]),find_first_not_phone_number(replace(replace(replace(p1.tel,'"',''),'[','{'),']','}')::text[]),'null') /*CONTACT_MOBILE_NUMBER*/ + ,coalesce(p1.email,'') /*EMAIL_ADDRESS*/ + ,'YES' /*REQUEST_A_DEMO*/ + ,'YES' /*REQUEST_A_QUOTE*/ + ,'YES' /*HAMCAM*/ + ,4 /*PURCHASE_INTENT*/ + ,'L - mql '||case when p0.workflow_name ='CN离线工单_选型报价' then coalesce((SELECT jsonb_extract_path_text(field, 'value') AS value_298245 +FROM ( + SELECT jsonb_array_elements(p0.start_form::jsonb->'fields') AS field +) AS t +WHERE jsonb_extract_path_text(field, 'id')::int = 297757),'') else coalesce((SELECT jsonb_extract_path_text(field, 'value') AS value_298245 +FROM ( + SELECT jsonb_array_elements(p0.start_form::jsonb->'fields') AS field +) AS t +WHERE jsonb_extract_path_text(field, 'id')::int = 298246),'') end ||' 预算情况:'||coalesce((SELECT jsonb_extract_path_text(field, 'value') AS value_298245 +FROM ( + SELECT jsonb_array_elements(p0.start_form::jsonb->'fields') AS field +) AS t +WHERE jsonb_extract_path_text(field, 'id')::int = 303805),' None ')||';决策权确认:'||coalesce((SELECT jsonb_extract_path_text(field, 'value') AS value_298245 +FROM ( + SELECT jsonb_array_elements(p0.start_form::jsonb->'fields') AS field +) AS t +WHERE jsonb_extract_path_text(field, 'id')::int = 303806),' None ')||';计划购买时间:'||coalesce((SELECT jsonb_extract_path_text(field, 'value') AS value_298245 +FROM ( + SELECT jsonb_array_elements(p0.start_form::jsonb->'fields') AS field +) AS t +WHERE jsonb_extract_path_text(field, 'id')::int = 298249),' None ')||';' /*COMMENTS*/ + ,coalesce((SELECT jsonb_extract_path_text(field, 'value') AS value_297729 +FROM ( + SELECT jsonb_array_elements(p0.start_form::jsonb->'fields') AS field +) AS t +WHERE jsonb_extract_path_text(field, 'id')::int = 297729),'') /*INDUSTRY*/ + ,coalesce((SELECT jsonb_extract_path_text(field, 'value') AS value_298247 +FROM ( + SELECT jsonb_array_elements(p0.start_form::jsonb->'fields') AS field +) AS t +WHERE jsonb_extract_path_text(field, 'id')::int = 298247),'') /*CCP_PRODUCT_INTEREST_01*/ + ,coalesce((SELECT jsonb_extract_path_text(field, 'value') AS value_297730 +FROM ( + SELECT jsonb_array_elements(p0.start_form::jsonb->'fields') AS field +) AS t +WHERE jsonb_extract_path_text(field, 'id')::int = 297730),'') /*CCP_APP_01_5*/ + ,coalesce((SELECT jsonb_extract_path_text(field, 'value') AS value_298300 +FROM ( + SELECT jsonb_array_elements(p0.start_form::jsonb->'fields') AS field +) AS t +WHERE jsonb_extract_path_text(field, 'id')::int = 304927),(SELECT jsonb_extract_path_text(field, 'value') AS value_298300 +FROM ( + SELECT jsonb_array_elements(p0.start_form::jsonb->'fields') AS field +) AS t +WHERE jsonb_extract_path_text(field, 'id')::int = 299137),'') /*LEAD_PRODUCTS_01_5*/ + ,'YES' /*PERMISSION_PHONE*/ + ,p0.create_time /*PERMISSION_PHONE_DATE*/ + ,'YES' /*PERMISSION_EMAIL*/ + ,p0.create_time /*PERMISSION_EMAIL_DATE*/ + ,'YES' /*PERMISSION_MAIL*/ + ,p0.create_time /*PERMISSION_MAIL_DATE*/ + ,'YES' /*PERMISSION_SMS*/ + ,p0.create_time /*PERMISSION_SMS_DATE*/ + ,'YES' /*AGREES_TO_PRIVACY_POLICY*/ + ,p0.create_time /*PORTAL_TERMS_AGREEMENT_DATE*/ + ,'YES' /*CONSENT_TO_COLLECT_PERSONAL_INFO*/ + ,p0.create_time /*CONSENT_TO_COLLECT_PERSONAL_INFO_DATE*/ + ,'' /*MARKETING_CONSENT*/ + ,TO_TIMESTAMP(:NULLDATE,'YYYYMMDD') /*MARKETING_CONSENT_DATE*/ + ,'' /*MEANS_OF_CONSENT*/ + ,'' /*SOURCE_OF_CONSENT*/ + ,'' /*VERSION_OF_PRIVACY_NOTICE*/ + ,'' /*RECORD_OF_CONSENT*/ + ,'' /*EXACT_CONSENT_LANGUAGE*/ + ,'' /*BRAND_TEKTRONIX*/ + ,'' /*BRAND_SSO*/ + ,'' /*BRAND_KEITHLEY*/ + ,'' /*EMAIL_PREFERENCE*/ + ,Substr('t01_ccc_work_ticket_info',1,3) /*Src_Sysname*/ + ,:ETLJOB /*Etl_Job*/ + ,'t01_ccc_work_ticket_info' /*Src_Table*/ + ,TO_DATE(:TXDATE,'YYYYMMDD') /*Etl_Tx_Dt*/ + ,TO_DATE(:TXDATE,'YYYYMMDD') /*Etl_First_Dt*/ + ,current_timestamp(0) /*Etl_Proc_Dt*/ + ,0 /*Etl_Batch_No*/ + ,case when cardinality(array_remove(replace(replace(replace(p1.tel,'"',''),'[','{'),']','}')::text[],find_first_phone_number(replace(replace(replace(p1.tel,'"',''),'[','{'),']','}')::text[])))=0 then '' +else find_first_phone_number(array_remove(replace(replace(replace(p1.tel,'"',''),'[','{'),']','}')::text[],find_first_phone_number(replace(replace(replace(p1.tel,'"',''),'[','{'),']','}')::text[]))) +end /*second_mobile_number*/ + ,coalesce(find_first_not_phone_number(replace(replace(replace(p1.tel,'"',''),'[','{'),']','}')::text[]),'') /*company_phone_number*/ + ,coalesce(p3.district,'') /*district*/ + +FROM :PDMDB.t01_ccc_work_ticket_info p0 +LEFT JOIN :PDMDB.t01_ccc_cust_info p1 + ON p0.customer_id =p1.id +LEFT JOIN :PDMDB.t00_china_city_info p2 + ON p2.city_name like case when length(coalesce((SELECT jsonb_extract_path_text(j, 'value') + FROM jsonb_array_elements((p0.start_form::json -> 'fields')::jsonb) j + WHERE jsonb_extract_path_text(j, 'id') = '317832'),(SELECT jsonb_extract_path_text(j, 'value') + FROM jsonb_array_elements((p0.start_form::json -> 'fields')::jsonb) j + WHERE jsonb_extract_path_text(j, 'id') = '317748'),(SELECT jsonb_extract_path_text(j, 'value') + FROM jsonb_array_elements((p0.start_form::json -> 'fields')::jsonb) j + WHERE jsonb_extract_path_text(j, 'id') = '297755'),'')::text)>0 then coalesce((SELECT jsonb_extract_path_text(j, 'value') + FROM jsonb_array_elements((p0.start_form::json -> 'fields')::jsonb) j + WHERE jsonb_extract_path_text(j, 'id') = '317832'),(SELECT jsonb_extract_path_text(j, 'value') + FROM jsonb_array_elements((p0.start_form::json -> 'fields')::jsonb) j + WHERE jsonb_extract_path_text(j, 'id') = '317748'),(SELECT jsonb_extract_path_text(j, 'value') + FROM jsonb_array_elements((p0.start_form::json -> 'fields')::jsonb) j + WHERE jsonb_extract_path_text(j, 'id') = '297755'),'')::text||'%' else '' end +LEFT JOIN :PDMDB.t00_china_city_pnum p3 + ON p3.full_name = case when length(coalesce((SELECT jsonb_extract_path_text(j, 'value') + FROM jsonb_array_elements((p0.start_form::json -> 'fields')::jsonb) j + WHERE jsonb_extract_path_text(j, 'id') = '317832'),(SELECT jsonb_extract_path_text(j, 'value') + FROM jsonb_array_elements((p0.start_form::json -> 'fields')::jsonb) j + WHERE jsonb_extract_path_text(j, 'id') = '317748'),(SELECT jsonb_extract_path_text(j, 'value') + FROM jsonb_array_elements((p0.start_form::json -> 'fields')::jsonb) j + WHERE jsonb_extract_path_text(j, 'id') = '297755'),'')::text)>0 then coalesce((SELECT jsonb_extract_path_text(j, 'value') + FROM jsonb_array_elements((p0.start_form::json -> 'fields')::jsonb) j + WHERE jsonb_extract_path_text(j, 'id') = '317832'),(SELECT jsonb_extract_path_text(j, 'value') + FROM jsonb_array_elements((p0.start_form::json -> 'fields')::jsonb) j + WHERE jsonb_extract_path_text(j, 'id') = '317748'),(SELECT jsonb_extract_path_text(j, 'value') + FROM jsonb_array_elements((p0.start_form::json -> 'fields')::jsonb) j + WHERE jsonb_extract_path_text(j, 'id') = '297755'),'')::text else '' end +where p0.state_selected in ('Leads') and p0.update_time >= current_date - interval '1 days' + +; + + + +/*****************************************************************************************************/ +/* GROUP 2:Source Table:t01_ccc_work_ticket_info******************************************************/ +/*****************************************************************************************************/ + +INSERT INTO f_ccc_work_ticket_integ_agi_CUR_I ( + PEXTENSION_CODE /*来源代码*/ + ,PEXTENSION /*来源*/ + ,LAST_NAME /*姓名*/ + ,SUFFIX /*工单ID*/ + ,COMPANY_NAME /*公司名称*/ + ,JOB_TITLE /*职位*/ + ,CITY /*城市*/ + ,STATE_COUNTY_LOCATION /*省份*/ + ,COUNTRY_CODE /*国家*/ + ,POSTAL_CODE /*邮编*/ + ,CONTACT_MOBILE_NUMBER /*电话*/ + ,EMAIL_ADDRESS /*邮箱*/ + ,REQUEST_A_DEMO /*demo标志*/ + ,REQUEST_A_QUOTE /*引用标志*/ + ,HAMCAM /*账户管理员标志*/ + ,PURCHASE_INTENT /*购买意向*/ + ,COMMENTS /*备注*/ + ,INDUSTRY /*行业*/ + ,CCP_PRODUCT_INTEREST_01 /*产品偏好*/ + ,CCP_APP_01_5 /*应用*/ + ,LEAD_PRODUCTS_01_5 /*产品型号*/ + ,PERMISSION_PHONE /*电话授权标志*/ + ,PERMISSION_PHONE_DATE /*电话授权时间*/ + ,PERMISSION_EMAIL /*电子邮件授权标志*/ + ,PERMISSION_EMAIL_DATE /*电子邮件授权时间*/ + ,PERMISSION_MAIL /*邮件授权标志*/ + ,PERMISSION_MAIL_DATE /*邮件授权时间*/ + ,PERMISSION_SMS /*SMS授权标志*/ + ,PERMISSION_SMS_DATE /*SMS授权时间*/ + ,AGREES_TO_PRIVACY_POLICY /*个人信息授权标志*/ + ,PORTAL_TERMS_AGREEMENT_DATE /*协议授权时间*/ + ,CONSENT_TO_COLLECT_PERSONAL_INFO /*个人信息收集标志*/ + ,CONSENT_TO_COLLECT_PERSONAL_INFO_DATE /*个人信息收集时间*/ + ,MARKETING_CONSENT /*MARKETING_CONSENT*/ + ,MARKETING_CONSENT_DATE /*MARKETING_CONSENT_DATE*/ + ,MEANS_OF_CONSENT /*MEANS_OF_CONSENT*/ + ,SOURCE_OF_CONSENT /*SOURCE_OF_CONSENT*/ + ,VERSION_OF_PRIVACY_NOTICE /*VERSION_OF_PRIVACY_NOTICE*/ + ,RECORD_OF_CONSENT /*RECORD_OF_CONSENT*/ + ,EXACT_CONSENT_LANGUAGE /*EXACT_CONSENT_LANGUAGE*/ + ,BRAND_TEKTRONIX /*BRAND_TEKTRONIX*/ + ,BRAND_SSO /*BRAND_SSO*/ + ,BRAND_KEITHLEY /*BRAND_KEITHLEY*/ + ,EMAIL_PREFERENCE /*EMAIL_PREFERENCE*/ + ,Src_Sysname /*来源系统*/ + ,Etl_Job /*作业名称*/ + ,Src_Table /*来源表*/ + ,Etl_Tx_Dt /*作业运行时间*/ + ,Etl_First_Dt /*最初入库时间*/ + ,Etl_Proc_Dt /*本次入库时间*/ + ,Etl_Batch_No /*作业批次号*/ + ,second_mobile_number /*第二手机号*/ + ,company_phone_number /*固话号*/ + ,district /*地区*/ + ) +SELECT + '401890X401890' /*PEXTENSION_CODE*/ + ,'' /*PEXTENSION*/ + ,coalesce((SELECT jsonb_extract_path_text(field, 'value') AS value_298245 +FROM ( + SELECT jsonb_array_elements(p0.start_form::jsonb->'fields') AS field +) AS t +WHERE jsonb_extract_path_text(field, 'id')::int = 298308),'') /*LAST_NAME*/ + ,COALESCE(TRIM(CAST(p0.id AS varchar(20))),'') /*SUFFIX*/ + ,coalesce((SELECT jsonb_extract_path_text(field, 'value') AS value_298245 +FROM ( + SELECT jsonb_array_elements(p0.start_form::jsonb->'fields') AS field +) AS t +WHERE jsonb_extract_path_text(field, 'id')::int = 297723),'') /*COMPANY_NAME*/ + ,'' /*JOB_TITLE*/ + ,coalesce((SELECT jsonb_extract_path_text(field, 'value') AS value_298245 +FROM ( + SELECT jsonb_array_elements(p0.start_form::jsonb->'fields') AS field +) AS t +WHERE jsonb_extract_path_text(field, 'id')::int = 304586),'') /*CITY*/ + ,coalesce(p2.city_name,'') /*STATE_COUNTY_LOCATION*/ + ,'TW' /*COUNTRY_CODE*/ + ,coalesce(p2.postalcode,'') /*POSTAL_CODE*/ + ,coalesce((SELECT jsonb_extract_path_text(field, 'value') AS value_298245 +FROM ( + SELECT jsonb_array_elements(p0.start_form::jsonb->'fields') AS field +) AS t +WHERE jsonb_extract_path_text(field, 'id')::int = 299210),'') /*CONTACT_MOBILE_NUMBER*/ + ,coalesce((SELECT jsonb_extract_path_text(field, 'value') AS value_298245 +FROM ( + SELECT jsonb_array_elements(p0.start_form::jsonb->'fields') AS field +) AS t +WHERE jsonb_extract_path_text(field, 'id')::int = 303803),'') /*EMAIL_ADDRESS*/ + ,'YES' /*REQUEST_A_DEMO*/ + ,'YES' /*REQUEST_A_QUOTE*/ + ,'YES' /*HAMCAM*/ + ,4 /*PURCHASE_INTENT*/ + ,'L - mql '||coalesce((SELECT jsonb_extract_path_text(field, 'value') AS value_298245 +FROM ( + SELECT jsonb_array_elements(p0.start_form::jsonb->'fields') AS field +) AS t +WHERE jsonb_extract_path_text(field, 'id')::int = 298302),'')||' 预算情况:'||coalesce((SELECT jsonb_extract_path_text(field, 'value') AS value_298245 +FROM ( + SELECT jsonb_array_elements(p0.start_form::jsonb->'fields') AS field +) AS t +WHERE jsonb_extract_path_text(field, 'id')::int = 303805),' None ')||';决策权确认:'||coalesce((SELECT jsonb_extract_path_text(field, 'value') AS value_298245 +FROM ( + SELECT jsonb_array_elements(p0.start_form::jsonb->'fields') AS field +) AS t +WHERE jsonb_extract_path_text(field, 'id')::int = 303806),' None ')||';计划购买时间:'||coalesce((SELECT jsonb_extract_path_text(field, 'value') AS value_298245 +FROM ( + SELECT jsonb_array_elements(p0.start_form::jsonb->'fields') AS field +) AS t +WHERE jsonb_extract_path_text(field, 'id')::int = 298249),' None ')||';' /*COMMENTS*/ + ,'' /*INDUSTRY*/ + ,'' /*CCP_PRODUCT_INTEREST_01*/ + ,'' /*CCP_APP_01_5*/ + ,coalesce((SELECT jsonb_extract_path_text(field, 'value') AS value_298300 +FROM ( + SELECT jsonb_array_elements(p0.start_form::jsonb->'fields') AS field +) AS t +WHERE jsonb_extract_path_text(field, 'id')::int = 304927),(SELECT jsonb_extract_path_text(field, 'value') AS value_298300 +FROM ( + SELECT jsonb_array_elements(p0.start_form::jsonb->'fields') AS field +) AS t +WHERE jsonb_extract_path_text(field, 'id')::int = 299137),'') /*LEAD_PRODUCTS_01_5*/ + ,'YES' /*PERMISSION_PHONE*/ + ,COALESCE(p0.create_time,TO_TIMESTAMP(:NULLDATE,'YYYYMMDD')) /*PERMISSION_PHONE_DATE*/ + ,'YES' /*PERMISSION_EMAIL*/ + ,COALESCE(p0.create_time,TO_TIMESTAMP(:NULLDATE,'YYYYMMDD')) /*PERMISSION_EMAIL_DATE*/ + ,'YES' /*PERMISSION_MAIL*/ + ,COALESCE(p0.create_time,TO_TIMESTAMP(:NULLDATE,'YYYYMMDD')) /*PERMISSION_MAIL_DATE*/ + ,'YES' /*PERMISSION_SMS*/ + ,TO_TIMESTAMP(:NULLDATE,'YYYYMMDD') /*PERMISSION_SMS_DATE*/ + ,'YES' /*AGREES_TO_PRIVACY_POLICY*/ + ,TO_TIMESTAMP(:NULLDATE,'YYYYMMDD') /*PORTAL_TERMS_AGREEMENT_DATE*/ + ,'' /*CONSENT_TO_COLLECT_PERSONAL_INFO*/ + ,TO_TIMESTAMP(:NULLDATE,'YYYYMMDD') /*CONSENT_TO_COLLECT_PERSONAL_INFO_DATE*/ + ,'' /*MARKETING_CONSENT*/ + ,TO_TIMESTAMP(:NULLDATE,'YYYYMMDD') /*MARKETING_CONSENT_DATE*/ + ,'' /*MEANS_OF_CONSENT*/ + ,'' /*SOURCE_OF_CONSENT*/ + ,'' /*VERSION_OF_PRIVACY_NOTICE*/ + ,'' /*RECORD_OF_CONSENT*/ + ,'' /*EXACT_CONSENT_LANGUAGE*/ + ,'' /*BRAND_TEKTRONIX*/ + ,'' /*BRAND_SSO*/ + ,'' /*BRAND_KEITHLEY*/ + ,'' /*EMAIL_PREFERENCE*/ + ,Substr('t01_ccc_work_ticket_info',1,3) /*Src_Sysname*/ + ,:ETLJOB /*Etl_Job*/ + ,'t01_ccc_work_ticket_info' /*Src_Table*/ + ,TO_DATE(:TXDATE,'YYYYMMDD') /*Etl_Tx_Dt*/ + ,TO_DATE(:TXDATE,'YYYYMMDD') /*Etl_First_Dt*/ + ,current_timestamp(0) /*Etl_Proc_Dt*/ + ,0 /*Etl_Batch_No*/ + ,'' /*second_mobile_number*/ + ,'' /*company_phone_number*/ + ,'' /*district*/ + +FROM :PDMDB.t01_ccc_work_ticket_info p0 +LEFT JOIN :PDMDB.t00_china_city_info p2 + ON p2.city_name2 like (SELECT jsonb_extract_path_text(j, 'value') + FROM jsonb_array_elements((p0.start_form::json -> 'fields')::jsonb) j + WHERE jsonb_extract_path_text(j, 'id') = '304586')::text||'%' +where p0 .state_selected ='TW_leads' and p0.update_time >= current_date - interval '3 days' + +; + + + +/*将不同数据插入到临时表 */ +;INSERT INTO f_ccc_work_ticket_integ_agi_INS ( + PEXTENSION_CODE /*来源代码*/ + ,PEXTENSION /*来源*/ + ,LAST_NAME /*姓名*/ + ,COMPANY_NAME /*公司名称*/ + ,JOB_TITLE /*职位*/ + ,CITY /*城市*/ + ,STATE_COUNTY_LOCATION /*省份*/ + ,COUNTRY_CODE /*国家*/ + ,POSTAL_CODE /*邮编*/ + ,CONTACT_MOBILE_NUMBER /*电话*/ + ,EMAIL_ADDRESS /*邮箱*/ + ,REQUEST_A_DEMO /*demo标志*/ + ,REQUEST_A_QUOTE /*引用标志*/ + ,HAMCAM /*账户管理员标志*/ + ,PURCHASE_INTENT /*购买意向*/ + ,COMMENTS /*备注*/ + ,INDUSTRY /*行业*/ + ,CCP_PRODUCT_INTEREST_01 /*产品偏好*/ + ,CCP_APP_01_5 /*应用*/ + ,LEAD_PRODUCTS_01_5 /*产品型号*/ + ,PERMISSION_PHONE /*电话授权标志*/ + ,PERMISSION_PHONE_DATE /*电话授权时间*/ + ,PERMISSION_EMAIL /*电子邮件授权标志*/ + ,PERMISSION_EMAIL_DATE /*电子邮件授权时间*/ + ,PERMISSION_MAIL /*邮件授权标志*/ + ,PERMISSION_MAIL_DATE /*邮件授权时间*/ + ,PERMISSION_SMS /*SMS授权标志*/ + ,PERMISSION_SMS_DATE /*SMS授权时间*/ + ,AGREES_TO_PRIVACY_POLICY /*个人信息授权标志*/ + ,PORTAL_TERMS_AGREEMENT_DATE /*协议授权时间*/ + ,CONSENT_TO_COLLECT_PERSONAL_INFO /*个人信息收集标志*/ + ,CONSENT_TO_COLLECT_PERSONAL_INFO_DATE /*个人信息收集时间*/ + ,MARKETING_CONSENT /*MARKETING_CONSENT*/ + ,MARKETING_CONSENT_DATE /*MARKETING_CONSENT_DATE*/ + ,MEANS_OF_CONSENT /*MEANS_OF_CONSENT*/ + ,SOURCE_OF_CONSENT /*SOURCE_OF_CONSENT*/ + ,VERSION_OF_PRIVACY_NOTICE /*VERSION_OF_PRIVACY_NOTICE*/ + ,RECORD_OF_CONSENT /*RECORD_OF_CONSENT*/ + ,EXACT_CONSENT_LANGUAGE /*EXACT_CONSENT_LANGUAGE*/ + ,BRAND_TEKTRONIX /*BRAND_TEKTRONIX*/ + ,BRAND_SSO /*BRAND_SSO*/ + ,BRAND_KEITHLEY /*BRAND_KEITHLEY*/ + ,EMAIL_PREFERENCE /*EMAIL_PREFERENCE*/ + ,second_mobile_number /*第二手机号*/ + ,company_phone_number /*固话号*/ + ,district /*地区*/ + ,SUFFIX /*工单ID*/ + ,Src_Sysname /*来源系统*/ + ,Etl_Job /*作业名称*/ + ,Src_Table /*来源表*/ + ,Etl_Tx_Dt /*作业运行时间*/ + ,Etl_First_Dt /*最初入库时间*/ + ,Etl_Proc_Dt /*本次入库时间*/ + ,Etl_Batch_No /*作业批次号*/ + +) + SELECT + P1.PEXTENSION_CODE /*来源代码*/ + ,P1.PEXTENSION /*来源*/ + ,P1.LAST_NAME /*姓名*/ + ,P1.COMPANY_NAME /*公司名称*/ + ,P1.JOB_TITLE /*职位*/ + ,P1.CITY /*城市*/ + ,P1.STATE_COUNTY_LOCATION /*省份*/ + ,P1.COUNTRY_CODE /*国家*/ + ,P1.POSTAL_CODE /*邮编*/ + ,P1.CONTACT_MOBILE_NUMBER /*电话*/ + ,P1.EMAIL_ADDRESS /*邮箱*/ + ,P1.REQUEST_A_DEMO /*demo标志*/ + ,P1.REQUEST_A_QUOTE /*引用标志*/ + ,P1.HAMCAM /*账户管理员标志*/ + ,P1.PURCHASE_INTENT /*购买意向*/ + ,P1.COMMENTS /*备注*/ + ,P1.INDUSTRY /*行业*/ + ,P1.CCP_PRODUCT_INTEREST_01 /*产品偏好*/ + ,P1.CCP_APP_01_5 /*应用*/ + ,P1.LEAD_PRODUCTS_01_5 /*产品型号*/ + ,P1.PERMISSION_PHONE /*电话授权标志*/ + ,P1.PERMISSION_PHONE_DATE /*电话授权时间*/ + ,P1.PERMISSION_EMAIL /*电子邮件授权标志*/ + ,P1.PERMISSION_EMAIL_DATE /*电子邮件授权时间*/ + ,P1.PERMISSION_MAIL /*邮件授权标志*/ + ,P1.PERMISSION_MAIL_DATE /*邮件授权时间*/ + ,P1.PERMISSION_SMS /*SMS授权标志*/ + ,P1.PERMISSION_SMS_DATE /*SMS授权时间*/ + ,P1.AGREES_TO_PRIVACY_POLICY /*个人信息授权标志*/ + ,P1.PORTAL_TERMS_AGREEMENT_DATE /*协议授权时间*/ + ,P1.CONSENT_TO_COLLECT_PERSONAL_INFO /*个人信息收集标志*/ + ,P1.CONSENT_TO_COLLECT_PERSONAL_INFO_DATE /*个人信息收集时间*/ + ,P1.MARKETING_CONSENT /*MARKETING_CONSENT*/ + ,P1.MARKETING_CONSENT_DATE /*MARKETING_CONSENT_DATE*/ + ,P1.MEANS_OF_CONSENT /*MEANS_OF_CONSENT*/ + ,P1.SOURCE_OF_CONSENT /*SOURCE_OF_CONSENT*/ + ,P1.VERSION_OF_PRIVACY_NOTICE /*VERSION_OF_PRIVACY_NOTICE*/ + ,P1.RECORD_OF_CONSENT /*RECORD_OF_CONSENT*/ + ,P1.EXACT_CONSENT_LANGUAGE /*EXACT_CONSENT_LANGUAGE*/ + ,P1.BRAND_TEKTRONIX /*BRAND_TEKTRONIX*/ + ,P1.BRAND_SSO /*BRAND_SSO*/ + ,P1.BRAND_KEITHLEY /*BRAND_KEITHLEY*/ + ,P1.EMAIL_PREFERENCE /*EMAIL_PREFERENCE*/ + ,P1.second_mobile_number /*第二手机号*/ + ,P1.company_phone_number /*固话号*/ + ,P1.district /*地区*/ + ,P1.SUFFIX /*工单ID*/ + ,P1.Src_Sysname /*来源系统*/ + ,P1.Etl_Job /*作业名称*/ + ,P1.Src_Table /*来源表*/ + ,P1.Etl_Tx_Dt /*作业运行时间*/ + ,P1.Etl_First_Dt /*最初入库时间*/ + ,P1.Etl_Proc_Dt /*本次入库时间*/ + ,P1.Etl_Batch_No /*作业批次号*/ + +FROM f_ccc_work_ticket_integ_agi_CUR_I P1 +LEFT JOIN :COMMDB.f_ccc_work_ticket_integ P2 +ON P1.PEXTENSION_CODE = P2.PEXTENSION_CODE + AND P1.PEXTENSION = P2.PEXTENSION + AND P1.LAST_NAME = P2.LAST_NAME + AND P1.COMPANY_NAME = P2.COMPANY_NAME + AND P1.JOB_TITLE = P2.JOB_TITLE + AND P1.CITY = P2.CITY + AND P1.STATE_COUNTY_LOCATION = P2.STATE_COUNTY_LOCATION + AND P1.COUNTRY_CODE = P2.COUNTRY_CODE + AND P1.POSTAL_CODE = P2.POSTAL_CODE + AND P1.CONTACT_MOBILE_NUMBER = P2.CONTACT_MOBILE_NUMBER + AND P1.EMAIL_ADDRESS = P2.EMAIL_ADDRESS + AND P1.REQUEST_A_DEMO = P2.REQUEST_A_DEMO + AND P1.REQUEST_A_QUOTE = P2.REQUEST_A_QUOTE + AND P1.HAMCAM = P2.HAMCAM + AND P1.PURCHASE_INTENT = P2.PURCHASE_INTENT + AND P1.COMMENTS = P2.COMMENTS + AND P1.INDUSTRY = P2.INDUSTRY + AND P1.CCP_PRODUCT_INTEREST_01 = P2.CCP_PRODUCT_INTEREST_01 + AND P1.CCP_APP_01_5 = P2.CCP_APP_01_5 + AND P1.LEAD_PRODUCTS_01_5 = P2.LEAD_PRODUCTS_01_5 + AND P1.PERMISSION_PHONE = P2.PERMISSION_PHONE + AND P1.PERMISSION_PHONE_DATE = P2.PERMISSION_PHONE_DATE + AND P1.PERMISSION_EMAIL = P2.PERMISSION_EMAIL + AND P1.PERMISSION_EMAIL_DATE = P2.PERMISSION_EMAIL_DATE + AND P1.PERMISSION_MAIL = P2.PERMISSION_MAIL + AND P1.PERMISSION_MAIL_DATE = P2.PERMISSION_MAIL_DATE + AND P1.PERMISSION_SMS = P2.PERMISSION_SMS + AND P1.PERMISSION_SMS_DATE = P2.PERMISSION_SMS_DATE + AND P1.AGREES_TO_PRIVACY_POLICY = P2.AGREES_TO_PRIVACY_POLICY + AND P1.PORTAL_TERMS_AGREEMENT_DATE = P2.PORTAL_TERMS_AGREEMENT_DATE + AND P1.CONSENT_TO_COLLECT_PERSONAL_INFO = P2.CONSENT_TO_COLLECT_PERSONAL_INFO + AND P1.CONSENT_TO_COLLECT_PERSONAL_INFO_DATE = P2.CONSENT_TO_COLLECT_PERSONAL_INFO_DATE + AND P1.MARKETING_CONSENT = P2.MARKETING_CONSENT + AND P1.MARKETING_CONSENT_DATE = P2.MARKETING_CONSENT_DATE + AND P1.MEANS_OF_CONSENT = P2.MEANS_OF_CONSENT + AND P1.SOURCE_OF_CONSENT = P2.SOURCE_OF_CONSENT + AND P1.VERSION_OF_PRIVACY_NOTICE = P2.VERSION_OF_PRIVACY_NOTICE + AND P1.RECORD_OF_CONSENT = P2.RECORD_OF_CONSENT + AND P1.EXACT_CONSENT_LANGUAGE = P2.EXACT_CONSENT_LANGUAGE + AND P1.BRAND_TEKTRONIX = P2.BRAND_TEKTRONIX + AND P1.BRAND_SSO = P2.BRAND_SSO + AND P1.BRAND_KEITHLEY = P2.BRAND_KEITHLEY + AND P1.EMAIL_PREFERENCE = P2.EMAIL_PREFERENCE + AND P1.second_mobile_number = P2.second_mobile_number + AND P1.company_phone_number = P2.company_phone_number + AND P1.district = P2.district + AND P1.SUFFIX = P2.SUFFIX + +WHERE P2.PEXTENSION_CODE IS NULL + OR P2.PEXTENSION IS NULL + OR P2.LAST_NAME IS NULL + OR P2.COMPANY_NAME IS NULL + OR P2.JOB_TITLE IS NULL + OR P2.CITY IS NULL + OR P2.STATE_COUNTY_LOCATION IS NULL + OR P2.COUNTRY_CODE IS NULL + OR P2.POSTAL_CODE IS NULL + OR P2.CONTACT_MOBILE_NUMBER IS NULL + OR P2.EMAIL_ADDRESS IS NULL + OR P2.REQUEST_A_DEMO IS NULL + OR P2.REQUEST_A_QUOTE IS NULL + OR P2.HAMCAM IS NULL + OR P2.PURCHASE_INTENT IS NULL + OR P2.COMMENTS IS NULL + OR P2.INDUSTRY IS NULL + OR P2.CCP_PRODUCT_INTEREST_01 IS NULL + OR P2.CCP_APP_01_5 IS NULL + OR P2.LEAD_PRODUCTS_01_5 IS NULL + OR P2.PERMISSION_PHONE IS NULL + OR P2.PERMISSION_PHONE_DATE IS NULL + OR P2.PERMISSION_EMAIL IS NULL + OR P2.PERMISSION_EMAIL_DATE IS NULL + OR P2.PERMISSION_MAIL IS NULL + OR P2.PERMISSION_MAIL_DATE IS NULL + OR P2.PERMISSION_SMS IS NULL + OR P2.PERMISSION_SMS_DATE IS NULL + OR P2.AGREES_TO_PRIVACY_POLICY IS NULL + OR P2.PORTAL_TERMS_AGREEMENT_DATE IS NULL + OR P2.CONSENT_TO_COLLECT_PERSONAL_INFO IS NULL + OR P2.CONSENT_TO_COLLECT_PERSONAL_INFO_DATE IS NULL + OR P2.MARKETING_CONSENT IS NULL + OR P2.MARKETING_CONSENT_DATE IS NULL + OR P2.MEANS_OF_CONSENT IS NULL + OR P2.SOURCE_OF_CONSENT IS NULL + OR P2.VERSION_OF_PRIVACY_NOTICE IS NULL + OR P2.RECORD_OF_CONSENT IS NULL + OR P2.EXACT_CONSENT_LANGUAGE IS NULL + OR P2.BRAND_TEKTRONIX IS NULL + OR P2.BRAND_SSO IS NULL + OR P2.BRAND_KEITHLEY IS NULL + OR P2.EMAIL_PREFERENCE IS NULL + OR P2.second_mobile_number IS NULL + OR P2.company_phone_number IS NULL + OR P2.district IS NULL + OR P2.SUFFIX IS NULL + +; +/*将新增数据插入到目标表 */ +;INSERT INTO :COMMDB.f_ccc_work_ticket_integ ( + PEXTENSION_CODE /*来源代码*/ + ,PEXTENSION /*来源*/ + ,LAST_NAME /*姓名*/ + ,COMPANY_NAME /*公司名称*/ + ,JOB_TITLE /*职位*/ + ,CITY /*城市*/ + ,STATE_COUNTY_LOCATION /*省份*/ + ,COUNTRY_CODE /*国家*/ + ,POSTAL_CODE /*邮编*/ + ,CONTACT_MOBILE_NUMBER /*电话*/ + ,EMAIL_ADDRESS /*邮箱*/ + ,REQUEST_A_DEMO /*demo标志*/ + ,REQUEST_A_QUOTE /*引用标志*/ + ,HAMCAM /*账户管理员标志*/ + ,PURCHASE_INTENT /*购买意向*/ + ,COMMENTS /*备注*/ + ,INDUSTRY /*行业*/ + ,CCP_PRODUCT_INTEREST_01 /*产品偏好*/ + ,CCP_APP_01_5 /*应用*/ + ,LEAD_PRODUCTS_01_5 /*产品型号*/ + ,PERMISSION_PHONE /*电话授权标志*/ + ,PERMISSION_PHONE_DATE /*电话授权时间*/ + ,PERMISSION_EMAIL /*电子邮件授权标志*/ + ,PERMISSION_EMAIL_DATE /*电子邮件授权时间*/ + ,PERMISSION_MAIL /*邮件授权标志*/ + ,PERMISSION_MAIL_DATE /*邮件授权时间*/ + ,PERMISSION_SMS /*SMS授权标志*/ + ,PERMISSION_SMS_DATE /*SMS授权时间*/ + ,AGREES_TO_PRIVACY_POLICY /*个人信息授权标志*/ + ,PORTAL_TERMS_AGREEMENT_DATE /*协议授权时间*/ + ,CONSENT_TO_COLLECT_PERSONAL_INFO /*个人信息收集标志*/ + ,CONSENT_TO_COLLECT_PERSONAL_INFO_DATE /*个人信息收集时间*/ + ,MARKETING_CONSENT /*MARKETING_CONSENT*/ + ,MARKETING_CONSENT_DATE /*MARKETING_CONSENT_DATE*/ + ,MEANS_OF_CONSENT /*MEANS_OF_CONSENT*/ + ,SOURCE_OF_CONSENT /*SOURCE_OF_CONSENT*/ + ,VERSION_OF_PRIVACY_NOTICE /*VERSION_OF_PRIVACY_NOTICE*/ + ,RECORD_OF_CONSENT /*RECORD_OF_CONSENT*/ + ,EXACT_CONSENT_LANGUAGE /*EXACT_CONSENT_LANGUAGE*/ + ,BRAND_TEKTRONIX /*BRAND_TEKTRONIX*/ + ,BRAND_SSO /*BRAND_SSO*/ + ,BRAND_KEITHLEY /*BRAND_KEITHLEY*/ + ,EMAIL_PREFERENCE /*EMAIL_PREFERENCE*/ + ,second_mobile_number /*第二手机号*/ + ,company_phone_number /*固话号*/ + ,district /*地区*/ + ,SUFFIX /*工单ID*/ + ,Src_Sysname /*来源系统*/ + ,Etl_Job /*作业名称*/ + ,Src_Table /*来源表*/ + ,Etl_Tx_Dt /*作业运行时间*/ + ,Etl_First_Dt /*最初入库时间*/ + ,Etl_Proc_Dt /*本次入库时间*/ + ,Etl_Batch_No /*作业批次号*/ + +) +SELECT + P1.PEXTENSION_CODE /*来源代码*/ + ,P1.PEXTENSION /*来源*/ + ,P1.LAST_NAME /*姓名*/ + ,P1.COMPANY_NAME /*公司名称*/ + ,P1.JOB_TITLE /*职位*/ + ,P1.CITY /*城市*/ + ,P1.STATE_COUNTY_LOCATION /*省份*/ + ,P1.COUNTRY_CODE /*国家*/ + ,P1.POSTAL_CODE /*邮编*/ + ,P1.CONTACT_MOBILE_NUMBER /*电话*/ + ,P1.EMAIL_ADDRESS /*邮箱*/ + ,P1.REQUEST_A_DEMO /*demo标志*/ + ,P1.REQUEST_A_QUOTE /*引用标志*/ + ,P1.HAMCAM /*账户管理员标志*/ + ,P1.PURCHASE_INTENT /*购买意向*/ + ,P1.COMMENTS /*备注*/ + ,P1.INDUSTRY /*行业*/ + ,P1.CCP_PRODUCT_INTEREST_01 /*产品偏好*/ + ,P1.CCP_APP_01_5 /*应用*/ + ,P1.LEAD_PRODUCTS_01_5 /*产品型号*/ + ,P1.PERMISSION_PHONE /*电话授权标志*/ + ,P1.PERMISSION_PHONE_DATE /*电话授权时间*/ + ,P1.PERMISSION_EMAIL /*电子邮件授权标志*/ + ,P1.PERMISSION_EMAIL_DATE /*电子邮件授权时间*/ + ,P1.PERMISSION_MAIL /*邮件授权标志*/ + ,P1.PERMISSION_MAIL_DATE /*邮件授权时间*/ + ,P1.PERMISSION_SMS /*SMS授权标志*/ + ,P1.PERMISSION_SMS_DATE /*SMS授权时间*/ + ,P1.AGREES_TO_PRIVACY_POLICY /*个人信息授权标志*/ + ,P1.PORTAL_TERMS_AGREEMENT_DATE /*协议授权时间*/ + ,P1.CONSENT_TO_COLLECT_PERSONAL_INFO /*个人信息收集标志*/ + ,P1.CONSENT_TO_COLLECT_PERSONAL_INFO_DATE /*个人信息收集时间*/ + ,P1.MARKETING_CONSENT /*MARKETING_CONSENT*/ + ,P1.MARKETING_CONSENT_DATE /*MARKETING_CONSENT_DATE*/ + ,P1.MEANS_OF_CONSENT /*MEANS_OF_CONSENT*/ + ,P1.SOURCE_OF_CONSENT /*SOURCE_OF_CONSENT*/ + ,P1.VERSION_OF_PRIVACY_NOTICE /*VERSION_OF_PRIVACY_NOTICE*/ + ,P1.RECORD_OF_CONSENT /*RECORD_OF_CONSENT*/ + ,P1.EXACT_CONSENT_LANGUAGE /*EXACT_CONSENT_LANGUAGE*/ + ,P1.BRAND_TEKTRONIX /*BRAND_TEKTRONIX*/ + ,P1.BRAND_SSO /*BRAND_SSO*/ + ,P1.BRAND_KEITHLEY /*BRAND_KEITHLEY*/ + ,P1.EMAIL_PREFERENCE /*EMAIL_PREFERENCE*/ + ,P1.second_mobile_number /*第二手机号*/ + ,P1.company_phone_number /*固话号*/ + ,P1.district /*地区*/ + ,P1.SUFFIX /*工单ID*/ + ,P1.Src_Sysname /*来源系统*/ + ,P1.Etl_Job /*作业名称*/ + ,P1.Src_Table /*来源表*/ + ,P1.Etl_Tx_Dt /*作业运行时间*/ + ,P1.Etl_First_Dt /*最初入库时间*/ + ,P1.Etl_Proc_Dt /*本次入库时间*/ + ,P1.Etl_Batch_No /*作业批次号*/ + +FROM f_ccc_work_ticket_integ_agi_INS P1 +ON CONFLICT ( SUFFIX) +DO UPDATE SET + SUFFIX=excluded.SUFFIX + ,PEXTENSION_CODE=excluded.PEXTENSION_CODE + ,PEXTENSION=excluded.PEXTENSION + ,LAST_NAME=excluded.LAST_NAME + ,COMPANY_NAME=excluded.COMPANY_NAME + ,JOB_TITLE=excluded.JOB_TITLE + ,CITY=excluded.CITY + ,STATE_COUNTY_LOCATION=excluded.STATE_COUNTY_LOCATION + ,COUNTRY_CODE=excluded.COUNTRY_CODE + ,POSTAL_CODE=excluded.POSTAL_CODE + ,CONTACT_MOBILE_NUMBER=excluded.CONTACT_MOBILE_NUMBER + ,EMAIL_ADDRESS=excluded.EMAIL_ADDRESS + ,REQUEST_A_DEMO=excluded.REQUEST_A_DEMO + ,REQUEST_A_QUOTE=excluded.REQUEST_A_QUOTE + ,HAMCAM=excluded.HAMCAM + ,PURCHASE_INTENT=excluded.PURCHASE_INTENT + ,COMMENTS=excluded.COMMENTS + ,INDUSTRY=excluded.INDUSTRY + ,CCP_PRODUCT_INTEREST_01=excluded.CCP_PRODUCT_INTEREST_01 + ,CCP_APP_01_5=excluded.CCP_APP_01_5 + ,LEAD_PRODUCTS_01_5=excluded.LEAD_PRODUCTS_01_5 + ,PERMISSION_PHONE=excluded.PERMISSION_PHONE + ,PERMISSION_PHONE_DATE=excluded.PERMISSION_PHONE_DATE + ,PERMISSION_EMAIL=excluded.PERMISSION_EMAIL + ,PERMISSION_EMAIL_DATE=excluded.PERMISSION_EMAIL_DATE + ,PERMISSION_MAIL=excluded.PERMISSION_MAIL + ,PERMISSION_MAIL_DATE=excluded.PERMISSION_MAIL_DATE + ,PERMISSION_SMS=excluded.PERMISSION_SMS + ,PERMISSION_SMS_DATE=excluded.PERMISSION_SMS_DATE + ,AGREES_TO_PRIVACY_POLICY=excluded.AGREES_TO_PRIVACY_POLICY + ,PORTAL_TERMS_AGREEMENT_DATE=excluded.PORTAL_TERMS_AGREEMENT_DATE + ,CONSENT_TO_COLLECT_PERSONAL_INFO=excluded.CONSENT_TO_COLLECT_PERSONAL_INFO + ,CONSENT_TO_COLLECT_PERSONAL_INFO_DATE=excluded.CONSENT_TO_COLLECT_PERSONAL_INFO_DATE + ,MARKETING_CONSENT=excluded.MARKETING_CONSENT + ,MARKETING_CONSENT_DATE=excluded.MARKETING_CONSENT_DATE + ,MEANS_OF_CONSENT=excluded.MEANS_OF_CONSENT + ,SOURCE_OF_CONSENT=excluded.SOURCE_OF_CONSENT + ,VERSION_OF_PRIVACY_NOTICE=excluded.VERSION_OF_PRIVACY_NOTICE + ,RECORD_OF_CONSENT=excluded.RECORD_OF_CONSENT + ,EXACT_CONSENT_LANGUAGE=excluded.EXACT_CONSENT_LANGUAGE + ,BRAND_TEKTRONIX=excluded.BRAND_TEKTRONIX + ,BRAND_SSO=excluded.BRAND_SSO + ,BRAND_KEITHLEY=excluded.BRAND_KEITHLEY + ,EMAIL_PREFERENCE=excluded.EMAIL_PREFERENCE + ,second_mobile_number=excluded.second_mobile_number + ,company_phone_number=excluded.company_phone_number + ,district=excluded.district + ,Src_Sysname=excluded.Src_Sysname + ,Etl_Job=excluded.Etl_Job + ,Src_Table=excluded.Src_Table + ,Etl_Tx_Dt=excluded.Etl_Tx_Dt + ,Etl_First_Dt=excluded.Etl_First_Dt + ,Etl_Proc_Dt=excluded.Etl_Proc_Dt + ,Etl_Batch_No=excluded.Etl_Batch_No + + +; +/*****程序结束退出 */ +\q + diff --git a/dev/workflow/TK_Cust/smart_ccc_dynamic_email_ls/天润dynamic邮件同步-ls/wf_dag_smart_ccc_dynamic_email_ls.py b/dev/workflow/TK_Cust/smart_ccc_dynamic_email_ls/天润dynamic邮件同步-ls/wf_dag_smart_ccc_dynamic_email_ls.py new file mode 100644 index 0000000..ddaa889 --- /dev/null +++ b/dev/workflow/TK_Cust/smart_ccc_dynamic_email_ls/天润dynamic邮件同步-ls/wf_dag_smart_ccc_dynamic_email_ls.py @@ -0,0 +1,73 @@ +#!/usr/bin/python +# -*- encoding=utf-8 -*- +from airflow import DAG +from datetime import datetime, timedelta +from airflow.contrib.hooks.ssh_hook import SSHHook +from airflow.contrib.operators.ssh_operator import SSHOperator +from airflow.sensors.external_task_sensor import ExternalTaskSensor +import json + +from airflow.operators.trigger_dagrun import TriggerDagRunOperator +from airflow.operators.email_operator import EmailOperator +from airflow.utils.trigger_rule import TriggerRule + + +sshHook = SSHHook(ssh_conn_id ='ssh_air') +default_args = { +'owner': 'tek_newsletter@163.com', +'email_on_failure': True, +'email_on_retry':True, +'start_date': datetime(2024, 1, 1), +'depends_on_past': False, +'retries': 6, +'retry_delay': timedelta(minutes=10), +} + +dag = DAG('wf_dag_smart_ccc_dynamic_email_ls', default_args=default_args, +schedule_interval="35 11,15 * * *", +catchup=False, +dagrun_timeout=timedelta(minutes=160), +max_active_runs=3) + +task_failed = EmailOperator ( + dag=dag, + trigger_rule=TriggerRule.ONE_FAILED, + task_id="task_failed", + to=["tek_newsletter@163.com"], + cc=[""], + subject="smart_ccc_dynamic_email_ls_failed", + html_content='

您好,smart_ccc_dynamic_email_ls作业失败,请及时处理"

') + +f_ccc_work_ticket_integ = SSHOperator( +ssh_hook=sshHook, +task_id='f_ccc_work_ticket_integ', +command='/data/airflow/etl/COM/run_psql.sh {{ ds_nodash }} {{params.my_param}} >>/data/airflow/logs/run_tpt_{{ds_nodash}}.log 2>&1 ', +params={'my_param':"f_ccc_work_ticket_integ_agi"}, +depends_on_past=False, +retries=3, +dag=dag) + +dysql_update_dynamic_email_data = SSHOperator( +ssh_hook=sshHook, +task_id='dysql_update_dynamic_email_data', +command='/data/airflow/etl/COM/run_psql.sh {{ ds_nodash }} {{params.my_param}} >>/data/airflow/logs/run_tpt_{{ds_nodash}}.log 2>&1 ', +params={'my_param':"dysql_update_dynamic_email_data"}, +depends_on_past=False, +retries=3, +dag=dag) + + + + +uds_dynamic_data_export = SSHOperator( +ssh_hook=sshHook, +task_id='uds_dynamic_data_export', +command='python /data/airflow/etl/EXP/dynamic_data_export.py 001 >>/data/airflow/logs/run_data_export.log', +params={'my_param':"uds_dynamic_data_export"}, +depends_on_past=False, +retries=3, +dag=dag) + +f_ccc_work_ticket_integ >> uds_dynamic_data_export +uds_dynamic_data_export >> dysql_update_dynamic_email_data +dysql_update_dynamic_email_data >> task_failed diff --git a/dev/workflow/TK_Cust/smart_ccc_dynamic_email_ls/已发送邮件数据标志/dysql_update_dynamic_email_data.sql b/dev/workflow/TK_Cust/smart_ccc_dynamic_email_ls/已发送邮件数据标志/dysql_update_dynamic_email_data.sql new file mode 100644 index 0000000..a5bf7c4 --- /dev/null +++ b/dev/workflow/TK_Cust/smart_ccc_dynamic_email_ls/已发送邮件数据标志/dysql_update_dynamic_email_data.sql @@ -0,0 +1,11 @@ +/********************************************************************************************/ +/*******Main Section**************************************************************************/ +\set ON_ERROR_STOP on +\set AUTOCOMMIT on +\timing on + +insert into p61_output.ccc_work_ticket_email_list +select * from p30_common.f_ccc_work_ticket_integ +where etl_batch_no ='0' and suffix in (select "SUFFIX" from p61_output.v_f_ccc_dynamics_template); + +\q \ No newline at end of file