实时数仓-涉及维度退化的事实表

[关键字]:Flink SQL、Flink 双流Join、Flink 动态表与持续查询

业务背景

实现DWD-加购事务事实表

业务流程

业务流程

维度退化

何为维度退化

传关系型数据库
严格遵循三范式来 表内没有冗余 如果要获取维度字段需要联结其他表 ==> 时间换空间
非关系型数据库
遵循维度建模且数据量大 联结其他表会大大增加查询时间 所以将需要的维度字段合并到事务表 ==>空间换时间

宽表

宽窄表并不单单以表的宽细作为划分依据,而取决于表中是否有冗余字段
维度退化后,事务表不再符合三范式的规定 自然就是宽表

技术选型解析

DataStream vs Table

DataStream:没有封装好的API 需要重写编写Join
Table:有现成的Join API以供调用
参考:https://zhuanlan.zhihu.com/p/457325153

Flink CDC vs Lookup join

使用FlinkCDC会造成数据重复join的问题 所以选择使用Lookup连接器来生成表

Lookup Join 通常在 Flink SQL 表和外部系统查询结果关联时使用。
这种关联要求一张表(主表)有处理时间字段,而另一张表(维表)由 Lookup 连接器生成。
Lookup Join 做的是维度关联,而维度数据是有时效性的,那么我们就需要一个时间字段来对数据的版本进行标识。
因此,Flink 要求我们提供处理时间用作版本字段。
此处选择调用 PROCTIME() 函数获取系统时间,将其作为处理时间字段。

Kafka Connector vs Upsert Kafka Connector

选哪个作为连接器的判断标准:表的操作类型是否仅为Insert

Kafka ConnectorUpsert Kafka Connector
要求表不能有主键要求表有主键
不能消费带有 Upsert/Delete 操作类型数据的表,如 left join 生成的动态表支持以 upsert 方式从 Kafka topic 中读写数据

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值