Re: Flink-SQL合并多条记录到Map中

2021-04-09 文章 RL_LEE
我使用UDAF的方式解决了



--
Sent from: http://apache-flink.147419.n8.nabble.com/


Flink-SQL合并多条记录到Map中

2021-04-07 文章 RL_LEE
我希望能将某些维度下过去24小时的每一小时的统计结果计算出,然后合并保存在一个map中

在写SQL时,我尝试将多条计算结果合并保存至Map中:

create table to_redis(
   biz_name STRING,
   mchnt_id STRING,
   zb_value MAP
) WITH (
   'connector' = 'redis',
   'redis-mode' = 'single',
   'host' = '172.30.251.225',
   'port' = '10006',
   'password' = 'xxx',
   'command' = 'RKSC_SET',
   'sink' = 'rksc'
);

CREATE VIEW MaxAmountOf7DaysItem(biz_name, mchnt_id, timeslide, total) AS 
SELECT biz_name, mchnt_id, DATE_FORMAT(order_time,'-MM-dd') as
timeslide, MAX(amount) as total FROM event_source
GROUP BY biz_name, mchnt_id, DATE_FORMAT(order_time,'-MM-dd');

INSERT INTO to_redis 
   SELECT biz_name, mchnt_id, MAP[timeslide,total] FROM(
   SELECT biz_name, mchnt_id, timeslide , total,  ROW_NUMBER() OVER (
PARTITION BY biz_name, mchnt_id ORDER BY timeslide desc ) AS rownum
   FROM MaxAmountOf7DaysItem
   )WHERE rownum <=24;

我想要的结果是:
biz_name = "test", mchnt_id = "1", zb_value={2021-04-06 = 100,
2021-04-05 = 99 , ...}

但是结果MAP中的数据不能被正常读取,请问这种场景有好的解决方案或者替代方案吗?




--
Sent from: http://apache-flink.147419.n8.nabble.com/