复合场景

场景设定

某电商平台进行销售,想要实时分析不同地区进行购买操作的用户总数,用户信息、商品信息为独立维表,购买操作为流信息,实时计算可实现单流与双维表JOIN操作,并根据需求进行大小为10s的滚动窗口开窗,计算输出各个地区的消费者人数和消费总金额;

解决方案

复合-1.png

操作步骤

源表-字段填写

在流计算源表中进行字段映射填写,从kafka中将数据流映射为具体字段。

after_ordercodeofsys varchar as ordercodeofsys
after_paytime timestamp as paytime
after_goodscode varchar as goodscode
after_buyerscode varchar as buyerscode

源表-参数配置

复合-2.png

FlinkSQL代码

insert into dts_ds_ssddt_orders_target
select
   buyerplace as buyerplace,
   sum(CAST(goodsamount as bigint)) as all_count,
   COUNT(buyername) as people_count,
   TUMBLE_START(PROCTIME,INTERVAL '10' SECOND) as tms ,
   TUMBLE_END(PROCTIME,INTERVAL '10' SECOND) as tme
from (
        SELECT
            *
        FROM
            dts_ds_ssddt_orders_source s
                left JOIN dts_ds_ssddt_buyer_info b on s.buyerscode = b.buyerscode
    ) as c  left JOIN dts_ds_ssddt_goods_info g on c.goodscode = g.goodscode
GROUP BY
   buyerplace,TUMBLE(PROCTIME,INTERVAL '10' SECOND)

运行结果

  • 实时采集、FlinkSQL任务有正常的数据吞吐

复合-3.png
复合-7.png
  • 结果表内数据根据消费者地区和开窗进行划分,每次开窗时长为10s

复合-5.png