具体SQL如下。
方案2:

INSERT INTO flink_sdk_stats
(
    SELECT
        DATE_FORMAT(TUMBLE_END(`event_time`, INTERVAL '5' MINUTE),
'yyyyMMddHHmm') AS `time`,
        sid
            AS `supply_id`,
        'd77'
            AS `field_key`,
        d77
            AS `filed_value`,
        count(1)
            AS `pv`
    FROM
        baidu_log_view
    GROUP BY
        sid,
        d77,
        TUMBLE(event_time, INTERVAL '5' MINUTE)

    UNION ALL

    SELECT
        DATE_FORMAT(TUMBLE_END(`event_time`, INTERVAL '5' MINUTE),
'yyyyMMddHHmm') AS `time`,
        sid
            AS `supply_id`,
        'd79'
            AS `field_key`,
        d79
            AS `filed_value`,
        count(1)
            AS `pv`
    FROM
        baidu_log_view
    GROUP BY
        sid,
        d79,
        TUMBLE(event_time, INTERVAL '5' MINUTE)

    UNION ALL

    SELECT
        DATE_FORMAT(TUMBLE_END(`event_time`, INTERVAL '5' MINUTE),
'yyyyMMddHHmm') AS `time`,
        sid
            AS `supply_id`,
        'd80'
            AS `field_key`,
        d80
            AS `filed_value`,
        count(1)
            AS `pv`
    FROM
        baidu_log_view
    GROUP BY
        sid,
        d80,
        TUMBLE(event_time, INTERVAL '5' MINUTE)

    UNION ALL

    SELECT
        DATE_FORMAT(TUMBLE_END(`event_time`, INTERVAL '5' MINUTE),
'yyyyMMddHHmm') AS `time`,
        sid
            AS `supply_id`,
        'd81'
            AS `field_key`,
        d81
            AS `filed_value`,
        count(1)
            AS `pv`
    FROM
        baidu_log_view
    GROUP BY
        sid,
        d81,
        TUMBLE(event_time, INTERVAL '5' MINUTE)

    UNION ALL

    SELECT
        DATE_FORMAT(TUMBLE_END(`event_time`, INTERVAL '5' MINUTE),
'yyyyMMddHHmm') AS `time`,
        sid
            AS `supply_id`,
        'd83'
            AS `field_key`,
        d83
            AS `filed_value`,
        count(1)
            AS `pv`
    FROM
        baidu_log_view
    GROUP BY
        sid,
        d83,
        TUMBLE(event_time, INTERVAL '5' MINUTE)

    UNION ALL

    SELECT
        DATE_FORMAT(TUMBLE_END(`event_time`, INTERVAL '5' MINUTE),
'yyyyMMddHHmm') AS `time`,
        sid
            AS `supply_id`,
        'd84'
            AS `field_key`,
        d84
            AS `filed_value`,
        count(1)
            AS `pv`
    FROM
        baidu_log_view
    GROUP BY
        sid,
        d84,
        TUMBLE(event_time, INTERVAL '5' MINUTE)

    UNION ALL

    SELECT
        DATE_FORMAT(TUMBLE_END(`event_time`, INTERVAL '5' MINUTE),
'yyyyMMddHHmm') AS `time`,
        sid
            AS `supply_id`,
        'd86'
            AS `field_key`,
        d86
            AS `field_value`,
        count(1)
            AS `pv`
    FROM
        baidu_log_view
    GROUP BY
        sid,
        d86,
        TUMBLE(event_time, INTERVAL '5' MINUTE)
);



方案3:


INSERT INTO flink_sdk_stats
SELECT
    DATE_FORMAT(TUMBLE_END(`event_time`, INTERVAL '5' MINUTE),
'yyyyMMddHHmm') AS `time`,
    `supply_id`,
    `field_key`,
    `field_value`,
    count(1) AS `pv`
FROM
    (
     SELECT event_time, sid AS `supply_id`, 'd107' AS `field_key`,
d107 AS `field_value` FROM baidu_log_view
     UNION ALL
     SELECT event_time, sid AS `supply_id`, 'd77'  AS `field_key`, d77
 AS `field_value` FROM baidu_log_view
     UNION ALL
     SELECT event_time, sid AS `supply_id`, 'd77'  AS `field_key`, d77
 AS `field_value` FROM baidu_log_view
     UNION ALL
     SELECT event_time, sid AS `supply_id`, 'd79'  AS `field_key`, d79
 AS `field_value` FROM baidu_log_view
     UNION ALL
     SELECT event_time, sid AS `supply_id`, 'd80'  AS `field_key`, d80
 AS `field_value` FROM baidu_log_view
     UNION ALL
     SELECT event_time, sid AS `supply_id`, 'd81'  AS `field_key`, d81
 AS `field_value` FROM baidu_log_view
     UNION ALL
     SELECT event_time, sid AS `supply_id`, 'd83'  AS `field_key`, d83
 AS `field_value` FROM baidu_log_view
     UNION ALL
     SELECT event_time, sid AS `supply_id`, 'd84'  AS `field_key`, d84
 AS `field_value` FROM baidu_log_view
     UNION ALL
     SELECT event_time, sid AS `supply_id`, 'd86'  AS `field_key`, d86
 AS `field_value` FROM baidu_log_view
)
GROUP BY
    `supply_id`, `field_key`, `field_value`, TUMBLE(event_time,
INTERVAL '5' MINUTE);


赵一旦 <hinobl...@gmail.com> 于2020年12月15日周二 下午10:48写道:

>
> 需要,针对某个表,按照key1(xxx+yyy+ky1),key2(xxx+yyy+ky2),....等多组key统计。其中xxx+yyy为共同字段。目前有如下3种实现我。
> (1)每组key分别统计,分别insert。
> (2)每组key分别统计,然后union结果,然后insert。
> (3)针对表多次select,然后union,然后再基于key统计,然后insert。
> 第三种方案中,会将ky1、ky2这几个不同的字段通过
>
> select 'ky1' as key_name, ky1 as key_value
> union
> select 'ky2' as key_name, ky2 as key_value
>
> 的方式统一为key这个字段,最后通过(xxx+yyy+key_name+key_value)的方式统计。
>
> 目前发现个问题,方案3中,window结点一直没有watermark,导致不发生计算。
>
>
>
>

回复