实时数仓、基于Flink1.11的SQL构建实时数仓 之建表脚本

本文介绍了如何使用Flink从MySQL源库提取数据,包括订单表、商品表等,并展示了如何通过Kafka源和sink进行数据流转,以及构建DWD和DIM层表结构,如DWD_paid_order_detail和ads_province_index。最后,还涉及了Flink SQL在实时数据处理和维表加载中的应用。

mysql源库建表:

 

-- 订单表(order_info)

CREATE TABLE `order_info` (

`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号',

`consignee` varchar(100) DEFAULT NULL COMMENT '收货人',

`consignee_tel` varchar(20) DEFAULT NULL COMMENT '收件人电话',

`total_amount` decimal(10,2) DEFAULT NULL COMMENT '总金额',

`order_status` varchar(20) DEFAULT NULL COMMENT '订单状态',

`user_id` bigint(20) DEFAULT NULL COMMENT '用户id',

`payment_way` varchar(20) DEFAULT NULL COMMENT '付款方式',

`delivery_address` varchar(1000) DEFAULT NULL COMMENT '送货地址',

`order_comment` varchar(200) DEFAULT NULL COMMENT '订单备注',

`out_trade_no` varchar(50) DEFAULT NULL COMMENT '订单交易编号(第三方支付用)',

`trade_body` varchar(200) DEFAULT NULL COMMENT '订单描述(第三方支付用)',

`create_time` datetime DEFAULT NULL COMMENT '创建时间',

`operate_time` datetime DEFAULT NULL COMMENT '操作时间',

`expire_time` datetime DEFAULT NULL COMMENT '失效时间',

`tracking_no` varchar(100) DEFAULT NULL COMMENT '物流单编号',

`parent_order_id` bigint(20) DEFAULT NULL COMMENT '父订单编号',

`img_url` varchar(200) DEFAULT NULL COMMENT '图片路径',

`province_id` int(20) DEFAULT NULL COMMENT '地区',

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='订单表';

 

-- 订单详情表(order_detail)

CREATE TABLE `order_detail` (

`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号',

`order_id` bigint(20) DEFAULT NULL COMMENT '订单编号',

`sku_id` bigint(20) DEFAULT NULL COMMENT 'sku_id',

`sku_name` varchar(200) DEFAULT NULL COMMENT 'sku名称(冗余)',

`img_url` varchar(200) DEFAULT NULL COMMENT '图片名称(冗余)',

`order_price` decimal(10,2) DEFAULT NULL COMMENT '购买价格(下单时sku价格)',

`sku_num` varchar(200) DEFAULT NULL COMMENT '购买个数',

`create_time` datetime DEFAULT NULL COMMENT '创建时间',

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='订单详情表';

 

-- 商品表(sku_info)

CREATE TABLE `sku_info` (

`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'skuid(itemID)',

`spu_id` bigint(20) DEFAULT NULL COMMENT 'spuid',

`price` decimal(10,0) DEFAULT NULL COMMENT '价格',

`sku_name` varchar(200) DEFAULT NULL COMMENT 'sku名称',

`sku_desc` varchar(2000) DEFAULT NULL COMMENT '商品规格描述',

`weight` decimal(10,2) DEFAULT NULL COMMENT '重量',

`tm_id` bigint(20) DEFAULT NULL COMMENT '品牌(冗余)',

`category3_id` bigint(20) DEFAULT NULL COMMENT '三级分类id(冗余)',

`sku_default_img` varchar(200) DEFAULT NULL COMMENT '默认显示图片(冗余)',

`create_time` datetime DEFAULT NULL COMMENT '创建时间',

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='商品表';

 

-- 商品一级类目表(base_category1)

CREATE TABLE `base_category1` (

`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号',

`name` varchar(10) NOT NULL COMMENT '分类名称',

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='一级分类表';

 

-- 商品二级类目表(base_category2)

CREATE TABLE `base_category2` (

`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号',

`name` varchar(200) NOT NULL COMMENT '二级分类名称',

`category1_id` bigint(20) DEFAULT NULL COMMENT '一级分类编号',

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='二级分类表';

 

-- 商品三级类目表(base_category3)

CREATE TABLE `base_category3` (

`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号',

`name` varchar(200) NOT NULL COMMENT '三级分类名称',

`category2_id` bigint(20) DEFAULT NULL COMMENT '二级分类编号',

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='三级分类表';

 

-- 省份表(base_province)

CREATE TABLE `base_province` (

`id` int(20) DEFAULT NULL COMMENT 'id',

`name` varchar(20) DEFAULT NULL COMMENT '省名称',

`region_id` int(20) DEFAULT NULL COMMENT '大区id',

`area_code` varchar(20) DEFAULT NULL COMMENT '行政区位码'

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

-- 区域表(base_region)

CREATE TABLE `base_region` (

`id` int(20) NOT NULL COMMENT '大区id',

`region_name` varchar(20) DEFAULT NULL COMMENT '大区名称',

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

 

 

 

 

flink建表:

-- -------------------------

-- 省份表

-- Kafka Source

-- -------------------------

DROP TABLE IF EXISTS `ods_base_province`;

CREATE TABLE `ods_base_province` (

`id` INT,

`name` STRING,

`region_id` INT ,

`area_code`STRING

) WITH(

'connector' = 'kafka',

'topic' = 'test_base_province',

'properties.bootstrap.servers' = 'm1:9092,m2:9092,s1:9092',

'properties.group.id' = 'testGroup',

'format' = 'canal-json' ,

'scan.startup.mode' = 'earliest-offset'

) ;

-- -------------------------

-- 省份表

-- MySQL Sink

-- -------------------------

DROP TABLE IF EXISTS `base_province`;

CR

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值