--********************************************************************--
-- Author:         machaofan@1253758386586182.onaliyun.com
-- Created Time:   2023-09-07 11:06:37
-- Description:    Write your description here
-- Hints:          You can use SET statements to modify the configuration
--********************************************************************--

CREATE TEMPORARY TABLE ods_box_hongbao_log_pd(
        d VARCHAR
        ,i VARCHAR
        ,t  BIGINT
      --  ,eventTime as TO_TIMESTAMP( CAST(t/1000 as bigint),3)
        ,eventTime as TO_TIMESTAMP(t,3)
        ,WATERMARK FOR eventTime AS eventTime - INTERVAL '30' SECONDS  -- 定义事件时间，允许的最大窗口延迟为5s
) WITH (
    'connector' ='sls',
    'endPoint' ='cn-shanghai.log.aliyuncs.com',
    'accessId' ='LTAI5tEqx7wh38NsaFW7BJFN',
    'accessKey' ='cENYqeXBbFkVZeShFyPgTlIt1ouMpa',
    'startTime' ='2023-09-07 00:00:00',
    'project' ='996box-dev',
    'logStore' ='collect-dev',
    'consumerGroup' ='hongbaotest02'
);


-- CREATE  TEMPORARY TABLE ads_box_red_ad_statis_pd (
--  red_id bigint,
--  user_id bigint,
--  red_show_num bigint,
--  red_click_num bigint,
--  red_into_users bigint,
--  gmt_create   TIMESTAMP,
--  gmt_modify   TIMESTAMP,
--  ds VARCHAR,
-- PRIMARY KEY (red_id, user_id,ds) NOT ENFORCED
-- ) WITH (
-- --    'connector' = 'print',
-- --    'logger'='true'
--   'connector'='hologres',
--   'dbname'='sh996box_dev',
--   'tablename'='ads_box_red_ad_statis_pd',
--   'endpoint' = 'hgpostcn-cn-7mz2qe6e7002-cn-hangzhou-vpc.hologres.aliyuncs.com:80',
--   'username' = '${secret_values.996engine_ak}',
--   'password' = '${secret_values.996engine_sk}',
--   'mutatetype'='insertorignore'
-- );


CREATE  TEMPORARY TABLE ads_box_test (
 red_id bigint,
 user_id bigint,
 red_show_num bigint,
 red_click_num bigint,
 red_into_users bigint,
 gmt_create   TIMESTAMP,
 gmt_modify   TIMESTAMP,
 ds VARCHAR,
PRIMARY KEY (red_id, user_id,ds) NOT ENFORCED
) WITH (
--    'connector' = 'print',
--    'logger'='true'
  'connector'='hologres',
  'dbname'='sh996box_dev',
  'tablename'='ads_box_test',
  'endpoint' = 'hgpostcn-cn-7mz2qe6e7002-cn-hangzhou-vpc.hologres.aliyuncs.com:80',
  'username' = '${secret_values.996engine_ak}',
  'password' = '${secret_values.996engine_sk}',
  'mutatetype'='insertorignore'
);


create  TEMPORARY view  ads_box_red_ad_statis_pd1 as
select
        i
        ,eventTime
        ,cast(JSON_VALUE(d,'$.uid') as BIGINT) as uid
        ,cast(JSON_VALUE(d,'$.object_id') AS BIGINT)  as send_id
        ,cast(JSON_VALUE(d,'$.red_id') AS BIGINT) as red_id
from  ods_box_hongbao_log_pd where i in ('hongbao_1300','hongbao_1301','hongbao_1302');

-- -- 每分钟更新一次从零点开始截止到当前时刻的累计销售额
INSERT INTO ads_box_red_ad_statis_pd
SELECT
    red_id,
    send_id,
    COALESCE(max(case WHEN i='hongbao_1300' THEN  COALESCE(red_show_num,0) end ),0) as red_show_num,
    COALESCE(max(case WHEN i='hongbao_1301' THEN COALESCE(red_click_num,0) end ),0)  as red_click_num,
    COALESCE(max(case WHEN i='hongbao_1302' THEN COALESCE(red_click_num,0) end ),0)  as red_into_users,
    window_start,
    window_end ,
    SUBSTR(window_start,1,19) as ds
FROM
(SELECT
    window_start,
    window_end,
    send_id,
    i,
    red_id,
    count(uid) as red_show_num,
    count(distinct uid) as red_click_num -- 当天累计销售额
FROM TABLE(
    -- 定义窗口最大长度为一天的累计窗口，窗口滚动步长为1分钟
    CUMULATE(
        TABLE ads_box_red_ad_statis_pd1,
        DESCRIPTOR(eventTime),
        INTERVAL '1' MINUTES,
        INTERVAL '1' DAY))
GROUP BY window_start, window_end,send_id,i,red_id) as a1
GROUP BY  SUBSTR(window_start,1,19) ,window_start, window_end,send_id,red_id
;