2023.11.29 -hmzx电商平台建设项目 -核销主题阶段总结

目录

1.准备源数据

2.准备数仓工具进行源数据同步到ods层,本项目使用Datax

 3.使用Datax完成数据同步前建表时的方案选择

3.1同步方式区别:

3.2存储格式和压缩区别:

4.在hive中创建表,共31个表

5.数仓概念 和 数仓建模方案

5.1数仓的基本概念

5.2 数仓建模方案

关系建模:

 维度建模:

两张表关系:

数仓发展的三种模型:

 5.3数仓建设方案:

6.使用海豚调度完成ODS层到DWD层数据导入

6.1 先在DWD层建表

6.2 DWD层导入数据准备

6.3使用海豚调度平台创建导入数据的工作流,部署上线

​编辑

7.核销主题数仓建模

7.1核销主题需求

7.1.1 商品销售情况(核销)分析

7.1.2经营情况(已核销)分析

7.1.3 门店营销(核销)情况分析

销售渠道需求:

日清活动需求:

涉及表:


 

1.准备源数据

本项目的源数据层,由本地的Mysql和Sqlserver中而来,共31张表

销售表,会员表,订单表,库存表都称为指标/事实表,记录实际的业务数据 

2.准备数仓工具进行源数据同步到ods层,本项目使用Datax

datax的介绍:离线数据同步工具

 3.使用Datax完成数据同步前建表时的方案选择

3.1同步方式区别:

a.全量覆盖:建表时不需要构建分区表,每次一都是将之前的数据全部删除,重新导入 ,弊端是会没有历史数据

b.全量同步:建表时要构建分区表,分区字段与更新周期保持一致,每一次导入都是将表中所有数据导入到新的分区,弊端是如果新增的量很少,每次都是完全同步,会极大占用存储空间,以及有非常多的重复数据.

c.仅新增:建表时需要构建分区表,分区字段与更新周期保持一致,每一次导入都是将新增的数据导入到新的分区中

d.新增并更新:建表时需要构建分区表,分区字段与更新周期保持一致,每一次导入都是将新增的数据和更新的数据导入到一个新的分区中

e.缓慢渐变维:为了维护变化的数据, 有以下方法  1.直接覆盖 2.将新增和更新的数据放置到一个新的分区. 3.拉链表新增两个字段,一个开始一个结束,当数据发送变化的时候,将之前的数据结束时间调整为上一天的日期,新增一条新变更后的数据,开始时间为上一条结束时间

3.2存储格式和压缩区别:

存储格式一般选择orc ,  压缩方案:读多写少为snappy  /  写多读少为zlib或者gz

4.在hive中创建表,共31个表

构建的31张表分为8个维度表,23个业务数据表(事实表,指标表)

全量覆盖:适用于一般数据量较少,并且长时间不会改变,也不需要维护历史变化.  用于维度表,销售额目标等

全量同步:适用于保留历史快照, 用于每天门店商品库存天表.

仅新增:适用于数据量比较大,不需要维护历史变化的, 用于各种信息表,调货表

新增且更新:适用于数据量大,又需要维护历史变化,比如会员的信息表,商城订单明细表

5.数仓概念 和 数仓建模方案

5.1数仓的基本概念

5.2 数仓建模方案

关系建模:

 维度建模:

两张表关系:

1.事实表:根据分析的主题,主体所对应的表一般为事实表;事实表一般是由一堆其他表主键聚集的,事实表一般是由用户某种行为而产生的

2.维度表:在对事务进行分词处理的时候,在统计某个维度的时候,需要关联其他的表,这些表就是维度表.

数仓发展的三种模型:

 5.3数仓建设方案:

6.使用海豚调度完成ODS层到DWD层数据导入

6.1 先在DWD层建表

DWD层: 明细层

  • 作用: 根据要分析的主题, 从ODS层抽取相关的数据, 对数据进行清洗转换处理工作, 然后将数据加载到DWD层, 一般将此层称为 大聚合层, 一般将所有相关的数据全部糅杂在一个表中, 在此过程中, 可以进行一定的维度退化操作

  • 什么叫转换处理呢? 
        比如说: 对于时间而言, 在ODS表中有一个时间字段, 字段数据为:  2020-12-10 15:30:30
        说明:
            在ODS层这个时间字段上, 糅杂了太多字段数据, 包含 年  月  日 小时 分钟 秒
        此时, 需要将字段导入到DWD层时候, 将其转换为  年 月 日 小时 ...

维度层数据都是系统基础数据, 数据质量比较高, 顾一般不需要进行清洗处理操作

ods_dim_category_f进行了分类拉平操作

 ods_dim_goods_info_f将分类ID替换为对应一二三级分类ID,编码和名称

 ods_dim_store_f 门店表进行了降维操作 变成 dwd_dim_store_i

门店表: 在门店宽表构建时,就添加了门店面积信息和区域名称信息,门店面积信息可以用来计算坪效等,区域名称信息可以用来上卷时显示区域名称。

  • 其中门店面积信息可以从分店面积明细表中获取。先取实际经营面积,如果取不到(实际经营面积为空或0)再取经营面积。

  • 其中区域名称信息从店组信息表中取,store_group_type_no = ‘04’即对应区域的编码和名称。

  • 其中 store_type_code和management_type_code 需要转换为整数类型

新增了dwd_dim_store_clear_goods_i门店商品日清表,在门店商品表dwd_dim_store_goods_i的基础上筛选出日清数据,结构与门店商品表一致

6.2 DWD层导入数据准备

DATE_SUB()函数从DATE或DATETIME值中减去时间值(或间隔)。 

1.dim.dwd_dim_date_f时间维度表:不需要任何处理,直接将ODS层数据导入到DWD层即可

2.dim.dwd_dim_category_statistics_i 商品分类表进行拉宽处理

3.dim.dwd_dim_goods_i 商品表 ,将ods商品表和dwd分类表根据分类id进行关联

4.dim_dwd_dim_store_goods_i 门店商品表 , 将ods门店商品表和dwd分类表 根据分类id进行关联

5.dim_dwd_dim_store_clear_goods_i 日清门店商品表, 在门店商品表处理完后,通过条件where is_clear  = 1 即可

6.dim_dwd_dim_source_type_map_i 交易类型映射表,直接从ods导入dwd即可

7.dwd_dim_store_i 门店表 

6.3使用海豚调度平台创建导入数据的工作流,部署上线

DS的架构

7.核销主题数仓建模

核销主题:分为售卖主题-下单时间 ,  核销主题-订单完成时间/库存处理时间

目前dwd层共有30张表,核销主题共涉及到21张表

维度:dim_date_f , dim_source_type_map_f ,dim_store_f,dim_goods_f,dim_store_f

销售:store_sale_dtl,store_sale_info,store_sale_pay,shop_order,shop_order_item,shop_sale_pay,shop_refund,shop_refund_item

会员:member_union

订单:store_receive , store_return_to_vendor,store_return_to_dc,store_alloc_in,store_alloc_out,store_require

库存:store_stock_adj

7.1核销主题需求

7.1.1 商品销售情况(核销)分析

需求:了解不同城市,各个门店以及各个品类商品每天的销售情况

指标:销售单量、销售数量、销售金额、折扣金额、销售成本、余额支付金额、取消商品销售金额、退款商品销售金额、线上单量、线下单量、线上销售金额、线下销售金额、线上销售成本、线下销售成本、损耗金额、收货金额(收货-退货-退配+调入-调出)、要货金额

维度:时间,区域,类别

粒度:时间维度(天,下钻至刻),区域维度(城市,门店),类别维度(商品,第一品类,第二品类,第三品类)

涉及库:sale,member,order,stock

事实表:

sale: store_sale_dtl、store_sale_info、store_sale_pay、shop_order、shop_order_item、shop_sale_pay、shop_refund、shop_refund_item

member: member_union

stock: store_stock_adj

order: store_receive、store_return_to_vendor、store_return_to_dc、store_alloc_in、store_alloc_out、store_require

维度表:

 dim: dwd_dim_date_f、dwd_dim_source_type_map_f、dwd_dim_store_f、dwd_dim_goods_f、dwd_dim_store_goods_f

7.1.2经营情况(已核销)分析

需求:了解不同城市,各个门店每天的销售情况(已核销)

指标:销售单量、销售数量、销售金额、折扣金额、销售成本、余额支付金额、取消商品销售金额、退款商品销售金额、线上单量、线下单量、线上销售金额、线下销售金额、线上销售成本、线下销售成本、损耗金额、收货金额(收货-退货-退配+调入-调出)、要货金额、线上会员单量、实体卡会员单量、线上会员销售金额、实体卡会员销售金额、线上会员销售成本、实体卡会员销售成本、线上会员下单人数、实体卡会员下单人数、使用余额销售金额、使用余额单量、使用余额的销售成本、使用余额的下单人数

维度:时间,区域

粒度:时间维度(天,下钻至刻),区域维度(城市,门店)

涉及库:sale,member,order,stock

涉及表: 

  • 1) 事实表:

    a) sale:store_sale_dtl、store_sale_info、store_sale_pay、shop_order、shop_order_item、shop_sale_pay、shop_refund、shop_refund_item

    b) member:member_union

    c) stock:store_stock_adj

    d) order:store_receive、store_return_to_vendor、store_return_to_dc、store_alloc_in、store_alloc_out、store_require

  • 2) 维度表:

    dwd_dim_date_f、dwd_dim_source_type_map_f、dwd_dim_store_f、dwd_dim_goods_f、dwd_dim_store_goods_f

7.1.3 门店营销(核销)情况分析

说明:了解各个门店营销情况,包括不同销售渠道(已核销)的销售情况以及日清活动的效果。【日清活动指的是,为了保证果蔬的新鲜度,一些商品当日出清,为了能出清商品,会采用打折的方式出售,并且随着时间的推移,越晚折扣越低。】

销售渠道需求

指标:订单量、退款订单量、取消订单量、商品销售金额、商品销售成本、商品折扣金额

维度:订单渠道

日清活动需求

指标:销售SKU数、销售单量、销售数量、销售金额、折扣金额、销售成本、销售利润、线上单量、线下单量、线上销售金额、线下销售金额、损耗金额、收货金额(收货-退货-退配+调入-调出)、要货金额、

维度:区域、品类

粒度:区域维度(门店)、品类维度(第一品类)

涉及库:sale、member、order、stock

涉及表:
  • 1) 事实表:

    a) sale:store_sale_dtl、store_sale_info、store_sale_pay、shop_order、shop_order_item、shop_sale_pay、shop_refund、shop_refund_item

    b) member:member_union

    c) stock:store_stock_adj

    d) order:store_receive、store_return_to_vendor、store_return_to_dc、store_alloc_in、store_alloc_out、store_require

  • 2) 维度表:dwd_dim_date_f、dwd_dim_source_type_map_f、dwd_dim_store_f、dwd_dim_goods_f、dwd_dim_store_goods_f

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/205507.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

接口02-Java

接口02 一、接口与继承类1、引入2、总结(1)接口和继承解决的问题不同。(2)接口比继承更加灵活。(3)接口在一定程度上实现代码解耦。 二、接口的多态性1、多态参数① 回顾:继承中的多态② 接口的…

银河麒麟v10——植物大战僵尸原版——2023教程

1、原版安装包如下: 阿里云盘分享https://www.alipan.com/s/Qn5DpDKs2YT 2、麒麟信息: 3、安装命令: 注意:最后一步,需要先解压tar包,再切到PlantsVsZombies.exe所在目录下,再执行启动命令&a…

Linux C/C++高级全栈开发(后端/游戏/嵌入式/高性能网络/存储/基础架构)

Linux C/C高级全栈开发是一个涉及到多个领域的综合性技术要求,需要对Linux系统、C/C编程语言以及各种相关的技术进行深入的理解和应用。 下面是一些涵盖的主要技术领域和技能要点: Linux系统基础:熟悉Linux操作系统的原理和常用命令&#xf…

命名管道:简单案例实现

📟作者主页:慢热的陕西人 🌴专栏链接:Linux 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 本博客主要内容讲解了什么是命名管道,匿名管道和命名管道的…

咨询+低代码,强强联合为制造业客户赋能

内容来自演讲:沈毅 | 遨睿智库 | 董事长 & 王劭禹 | 橙木智能 | 联合创始人 摘要 文章主要讲述了智库董事长沈毅创办广告公司的经历,以及他在管理公司过程中遇到的问题和挑战,最后通过与明道云以及橙木智能联合创始人王邵禹老师的合作&…

java二十章多线程

概念 有很多工作是可以同时完成的,这种思想放在Java中被称为并发,并发完成每一件事被称为线程。 程序员可以在程序中执行多个线程,每一个线程完成一个功能//与其他线程并发执行,这种机制被称为多线程,并不算所有编程…

如何提高3D建模技能?

无论是制作影视动画还是视频游戏,提高3D建模技能对于你的工作都至关重要的。那么如何能创建出精美的3D模型呢?本文给大家一些3D建模技能方面的建议。 3D建模通过专门的软件完成,涉及制作三维对象。这项技能在视频游戏开发、建筑、动画和产品…

FFmpeg架构全面分析

一、简介 它的官网为:https://ffmpeg.org/,由Fabrice Bellard(法国著名程序员Born in 1972)于2000年发起创建的开源项目。该人是个牛人,在很多领域都有很大的贡献。 FFmpeg是多媒体领域的万能工具。只要涉及音视频领…

【Vulnhub 靶场】【DriftingBlues: 9 (final)】【简单】【20210509】

1、环境介绍 靶场介绍:https://www.vulnhub.com/entry/driftingblues-9-final,695/ 靶场下载:https://download.vulnhub.com/driftingblues/driftingblues9.ova 靶场难度:简单 发布日期:2021年05月09日 文件大小:738 …

达索系统SOLIDWORKS 2024工程图新功能

工程图概述 设计模型不仅能比绘制直线更快;SOLIDWORKS 从模型中生成工程图,模型的参数和几何关系在工程图中被保留,这样工程图可反映模型的设计意图;模型或工程图中的更改反映在其相关文件中,这样更改起来更容易&…

map文件解析

Map文件内容分为以下五段: 1)Section Cross References:模块、段(入口)交叉引用;(ASR编译生成的map文件没有输出该段信息) 2)Removing Unused input sections from the image:移除未使用的模块&#xff1…

【Linux】基础IO--文件基础知识/文件操作/文件描述符

文章目录 一、文件相关基础知识二、文件操作1.C语言文件操作2.操作系统文件操作2.1 比特位传递选项2.2 文件相关系统调用2.3 文件操作接口的使用 三、文件描述符fd1.什么是文件描述符2.文件描述符的分配规则 一、文件相关基础知识 我们对文件有如下的认识: 1.文件 …

java设计模式学习之【建造者模式】

文章目录 引言建造者模式简介定义与用途实现方式: 使用场景优势与劣势建造者模式在spring中的应用CD(光盘)的模拟示例UML 订单系统的模拟示例UML 代码地址 引言 建造者模式在创建复杂对象时展现出其强大的能力,特别是当这些对象需…

带大家做一个,易上手的家常炒鸡蛋

想做这道菜 先准备五个鸡蛋 然后将鸡蛋打到碗里面 然后 加小半勺盐 这个看个人喜好 放多少都没问题 不要太咸就好 将鸡蛋搅拌均匀 起锅烧油 油温热了之后 放三个干辣椒进去炒 干辣椒烧黑后 捞出来 味道就留在油里了 然后 倒入鸡蛋液 翻炒 注意翻炒 不要粘锅底 或者 一面糊…

嵌入式Linux:ARM驱动+QT应用+OpenCV人脸识别项目实现

一、前言: 这个项目主要分为两部分,客户端(ARM板端)负责利用OpenCV采集人脸数据,利用TCP将人脸数据发送给服务器,然后服务器根据人脸数据进行人脸识别,将识别后的结果返还给客户端,客…

【Linux】环境变量

文章目录 1. 环境变量的概念2. 常见的环境变量3. 查看环境变量的方法4. 测试PATH5. 和环境变量有关的命令6. 环境变量的组织方式7. 通过代码获取环境变量7.1 通过命令行的第三个参数7.2 通过第三方变量environ 8. 通过系统调用获取9. 环境变量的全局属性 1. 环境变量的概念 **…

函数指针数组指针数组传参的本质字符指针(进阶篇)

🚀 作者:阿辉不一般 🚀 你说呢:不服输的你,他们拿什么赢 🚀 专栏:爱上C语言 🚀作图工具:draw.io(免费开源的作图网站) 如果觉得文章对你有帮助的话,还请点赞…

【带头学C++】----- 八、C++面向对象编程 ---- 8.5 struct结构体类型增强使用说明

目录 8.5 struct结构体类型增强使用说明 8.5.1 C结构体可以定义成员函数 8.5.2 c中定义结构体变量可以不加struct关键字 8.6 bool布尔类型关键字 8.5 struct结构体类型增强使用说明 第六章对结构体的使用、内存对齐以及数组、深拷贝和浅拷贝进行了一个详细的说明&#xff0c…

带键扫的LED专用驱动方案

一、基本概述 TM1650 是一种带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路。内部集成有MCU输入输出控制数字接口、数据锁存器、LED 驱动、键盘扫描、辉度调节等电路。TM1650 性能稳定、质量可靠、抗干扰能力强,可适用于24 小时长期…

对抗产品团队中的认知偏误:给产品经理的专家建议

今天的产品经理面临着独特的挑战。他们不仅需要设计和构建创新功能,还必须了解这些功能将如何为客户带来价值并推进关键业务目标。如果不加以控制,认知偏差可能会导致您构建的内容与客户想要的内容或业务需求之间不一致。本文将详细阐述产品经理可以避免…