单流会话窗口
场景设定
某商家双十一期间进行商品促销活动,商家希望能够指定商品没有发生购买行为10s后查看该商品的销售总额。实时计算能够将商品出售情况作为数据流,采用会话窗口(Session Window)的方式,设定一个10s的会话间隔(Session Gap),即可完成对销售总额的自动计算。
操作步骤
源表-字段填写
在流计算源表中进行字段映射填写,从kafka中将数据流映射为具体字段。
after_event_id int as event_id
after_id varchar as id
after_buy_id varchar as buy_id
after_goods_type varchar as goods_type
after_pay_time timestamp as pay_time
after_buy_amount double as buy_amount
after_but_way varchar as buy_way
FlinkSQL代码
对Kafka数据流内容进行SUM运算,记录会话窗口开始/结束时间,并在最后根据商品ID和会话窗口进行划分。
INSERT INTO dts_ds_session_target
SELECT id as id,
SUM(buy_amount) AS totalsale,
SESSION_START(ROWTIME, INTERVAL '10' SECOND ) as sws,
SESSION_END(ROWTIME, INTERVAL '10' SECOND ) as swe
FROM dts_ds_merchant_source
GROUP BY id,SESSION(ROWTIME, INTERVAL '10' SECOND )