数据仓库整理

数仓

olap vs oltp

  • OLTP主要用于支持日常的业务操作,如银行交易、电子商务等,强调数据的准确性、实时性和并发性。
  • OLAP主要用于支持复杂的数据分析,如数据仓库、决策支持等,强调数据的维度、聚合和可视化。

将OLTP数据库的数据转移到OLAP数据库的过程一般包括以下几个步骤:

  • 数据抽取:从OLTP数据库中提取需要分析的数据,可以使用SQL语句、ETL工具或者其他方法。
  • 数据清洗:对抽取出来的数据进行质量检查和修正,去除重复、错误或者不一致的数据,保证数据的完整性和有效性。
  • 数据转换:根据OLAP数据库的结构和需求,对数据进行适当的变换和加工,如进行聚合、分组、排序等操作,生成事实表和维度表。
  • 数据加载:将转换后的数据加载到OLAP数据库中,可以使用批量加载、增量加载或者实时加载等方式。
  • 数据刷新:定期或者根据事件触发,对OLAP数据库中的数据进行更新和同步,保证数据的时效性和一致性。

数据仓库

源数据层是数据仓库的基础层,它负责从各种数据源抽取、清洗、转换和加载原始数据,保证数据的完整性、准确性和一致性。模型层是数据仓库的核心层,它负责对源数据层的数据进行进一步的加工、聚合和建模,使得数据更加适合分析和查询。模型层通常采用维度建模,将数据划分为事实表和维度表,事实表存储业务过程中发生的事件,维度表存储事件的属性。指标层是数据仓库的最上层,负责对模型层的数据进行最终的应用和呈现,提供给用户或系统使用。分层优点:复杂问题简单化、清晰数据结构(方便管理)、增加数据的复用性、隔离原始数据(解耦)
ods 原始数据层 存放原始数据,保持原貌不做处理
dwd 明细数据层 对ods层数据清洗(去除空值,脏数据,超过极限范围的数据)
dws 服务数据层 轻度聚合
ads 应用数据层 具体需求
在这里插入图片描述

ODS(原始数据库)(Operation Data Store)

保持数据原貌,不做任何修改;压缩采用 LZO,压缩比是 100g 数据压缩完 10g 左右。创建分区表

DWD(明细数据层)(Data Warehouse Detail)

  1. 数据清洗
    (1)空值去除
    (2)过滤核心字段无意义的数据,比如订单表中订单 id 为 null,支付表中支付 id 为空
    (3)将用户行为宽表和业务表进行数据一致性处理

  2. 清洗的手段
    Sql、mr、rdd、kettle、Python等等

  3. 清洗掉多少数据算合理
    1 万条数据清洗掉 1 条。

  4. 脱敏
    对手机号、身份证号等敏感数据脱敏

  5. 维度退化
    对业务数据传过来的表进行维度退化和降维。(商品一级二级三级、省市县、年月日)

  6. LZO压缩

  7. 列式存储 parquet

DWS(服务数据层)(Data Warehouse Summary)

DWS 层有 3-5 张宽表(处理 100-200 个指标 70%以上的需
求)
具体宽表名称:用户行为宽表,用户购买商品明细行为宽表,商品宽表,购物车宽表,物流宽表、登录注册、售后等。

哪个宽表最宽?大概有多少个字段?
最宽的是用户行为宽表。大概有 60-100 个字段

具体用户行为宽表字段名称
评论、打赏、收藏、关注–商品、关注–人、点赞、分享、好价爆料、文章发布、活跃、签到、补签卡、幸运屋、礼品、金币、电商点击、gmv

DWT(主题数据层)(Data Warehouse Topic)

分析过的指标
日活、月活、周活、留存、留存率、新增(日、周、年)、转化率、流失、回流、七天内连续 3 天登录(点赞、收藏、评价、购买、加购、下单、活动)、连续 3 周(月)登录、GMV、复购率、复购率排行、点赞、评论、收藏、领优惠价人数、使用优惠价、沉默、值不值得买、退款人数、退款率 topn 热门商品

留转 G 复活指标
(1)活跃
日活:100 万 ;月活:是日活的 2-3 倍 300 万
总注册的用户多少?1000 万-3000 万之间
(2)GMV
GMV:每天 10 万订单 (50 – 100 元) 500 万-1000 万
10%-20% 100 万-200 万
(3)复购率
某日常商品复购;(手纸、面膜、牙膏)10%-20%
电脑、显示器、手表 1%
(4)转化率
商品详情 =》 加购物车 =》下单 =》 支付
5%-10% 60-70% 90%-95%
(5)留存率
1/2/3、周留存、月留存
搞活动: 10-20%

ADS(应用数据层)(Application Data Store)

如何分析用户活跃?
在启动日志中统计不同设备 id 出现次数。

如何分析用户新增?
用活跃用户表 left join 用户新增表,用户新增表中 mid 为空的即为用户新增。

如何分析用户 1 天留存?
留存用户=前一天新增 join 今天活跃
用户留存率=留存用户/前一天新增

如何分析沉默用户?
(登录时间为 7 天前,且只出现过一次)
按照设备 id 对日活表分组,登录次数为 1,且是在一周前登录。

如何分析本周回流用户?
本周活跃 left join 本周新增 left join 上周活跃,且本周新增 id 和上周活跃 id 都为 null。

如何分析流失用户?
(登录时间为 7 天前)
按照设备 id 对日活表分组,且七天内没有登录过。

如何分析最近连续 3 周活跃用户数?
按照设备 id 对周活进行分组,统计次数大于 3 次。

如何分析最近七天内连续三天活跃用户数?
1)查询出最近 7 天的活跃用户,并对用户活跃日期进行排名
2)计算用户活跃日期及排名之间的差值
3)对同用户及差值分组,统计差值个数
4)将差值相同个数大于等于 3 的数据取出,然后去重,即为连续 3 天及以上活跃的用户
7 天连续收藏、点赞、购买、加购、付款、浏览、商品点击、退货
1 个月连续 7 天
连续两周

数据仓库建模的方法

  • ER模型是Inmon提出的,这个模型是符合3范式的,他的出发点就是整合数据,将各个系统中的数据以整个企业角度按主题进行分类,但是不能直接用于分析决策
  • 维度模型是Kimball提出的,这个人和Inmon算是数仓的两个流派,他的出发点就是分析决策,为分析需求服务,而现在多数的数仓的搭建都是基于维度模型进行搭建的。
  • 区别:ER模型冗余更少,但是在大规模数据跨表分析中,会造成多表关联,这会大大降低执行效率

维度模型

维度模型主要由事实表和维度表组成,事实表存储可度量的指标,维度表存储描述性的属性。维度模型有三种典型的形式:星型模型、雪花模型和星座模型。维度模型简单直观,适合业务变化快速的行业,能够快速交付,提高查询性能。

  • 星型模型:星型模型是由一个事实表和多个维度表组成的,每个维度表都直接与事实表相连接,形成一个类似星星的结构。星型模型的优点是简单直观,易于理解和使用,查询性能高,适合快速交付和变化频繁的业务需求。星型模型的缺点是数据冗余度高,可能导致数据不一致和存储空间浪费,维度表的层次结构不明显,不利于分析细节。
  • 雪花模型:雪花模型是对星型模型的扩展,它将一些维度表进一步分解为更小的维度表,形成一个类似雪花的结构。雪花模型的优点是数据冗余度低,数据一致性和质量高,维度表的层次结构清晰,有利于分析复杂的业务逻辑。雪花模型的缺点是设计和实现较复杂,查询性能低,需要多次连接操作,不利于快速响应和变更。

维度建模中表的类型

  • 维度表:一张维度表就表示对一个对象的一些描述信息。每个维度表都包含单一的主键列,和一些对该主键的描述信息,通常维度表会很宽。比如 乘客信息表,司机信息表,城市首都表
  • 事实表:一张事实表就表示对业务过程的描述,比如播单,下单,支付。每个事实表都包含若干维度外键,若干退化维度(维度属性存储到事实表中,减少关联),和数值型的度量值,通常事实表会比较大。

事实表有哪几种类型

a)事务事实表:每一行数据表示一个事务,数据一旦插入就不会修改播单
b)周期快照事实表:不会保存所有时间的数据,只会保留固定时间间隔的数据,比如购物车,每时每刻都会增加或者减少,但是我们更加关心的是一天结束的时候购物车中有几件商品,就会采用周期性快照事实表(汇总事实表) 历史至今快照事实表
c)累积快照事实表:用于追踪事实的变化过程,比如从买家下单到支付的时长,买家支付到卖家发货的时长等(数据会变更)

事实表的设计过程

a)一共有五步,分别是选择业务过程,声明粒度,确定维度,确定事实,冗余维度
a)选择业务过程 就是对业务的整个生命周期进行分析,然后选择与需求有关的业务过程,比如打车呼单的整个过程,乘客呼单,平台播单,司机抢单,司机接驾,完成订单,(买家下单,买家付款,卖家发货,买家确认收货)然后就是根据我们的需求去选择对应的过程
b)声明粒度 ,粒度就是用于确定事实表中一行所表示的业务的细节层次,通常在设计事实表的时候,粒度定义的越细越好,比如订单明细表的粒度就是 订单级别
c)确定维度,选择描述清楚业务过程所处环境的维度信息中,比如订单明细表中 出发城市,到达城市,产品线,司机,订单状态等(支付事实表,买家,买家,商品,收货人信息,业务类型,订单时间)
d)确定事实,事实就是分析业务过程中的度量值,比如订单金额,订单次数等
e)冗余维度,在事实表中冗余一些下游用户需要使用的常用维度,减少多表之间的关联。

维度表的设计过程

a)第一步,选择维度,比如商品维度
b)第二步,确定主维表,一般就是业务系统中商品表同步到ods层的表,就是主维表
c)第三步,确定相关维表,因为不同业务系统或者同一业务系统中的不同表之间都会存在关联性,根据对业务的梳理,确定哪些表和主维表存在关联关系,比如商品会与 类目,spu,卖家,店铺等维度存在关联。
d)第四步,确定维度属性,分为两步,就是从主维表中选择维度属性或者生成新的维度属性,还有就是从相关维表

数据仓库开发包含几步

a)第一步,进行数据调研;包括了业务调研和需求调研,业务调研就是要弄清楚公司有哪些业务,以及每个业务有包括哪些业务线,一般每个业务会独自建设数据仓库。
b)第二步,进行架构设计;包括了数据域划分和构建总线矩阵,数据域就是指 将业务过程或者维度进行抽象的集合,在划分数据域的时候,应该尽可能保证当前划分的能够覆盖所有的业务需求,又能在新业务进入时无影响的被包含到已有的数据域中或者扩展新的数据域,国际化数仓里面的数据域包括司机域,乘客域,交易域,客服域,安全域等等,阿里巴巴就会有 商品域 会员域 店铺域 交易域 日志域等等。构建总线矩阵,就需要明确每个数据域下有哪些业务过程,业务过程与哪些维度相关。
c)第三步,进行规范定义,主要包括定义维度属性和定义指标体系,包括原子指标和派生指标(原子指标+时间周期+修饰词)
d)第四步,进行模型设计,包括明细层DIM和DWD,和汇总层DWS和DM层,以及面向分析人员的app层。
e)第五步,进行代码开发和上线生成调度任务,进行周期运行。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Intellij idea 2023 年下载、安装教程、亲测可用

文章目录 1 下载与安装IDEA2 常用设置设置 Java JDK 版本自动导入包、移除包IDEA 自动生成 author 注释签名java.io.File 类无法自动提示导入?高亮显示与选中字符串相同的内容IDEA 配置 MavenIDEA 连接 Mysql 数据库 3 参考文章 1 下载与安装IDEA 首先先到官网下载…

硬件知识积累 网口接口 百兆,千兆,万兆 接口介绍与定义 (RJ45 --简单介绍)

1. 百兆网口 1.1百兆网的定义 百兆网的意思是是100Mb/S,中文叫做100兆位/秒。 1.2百兆网口的常用连接器 1.1.1 一般百兆网口的连接器一般是RJ45 下面是 实物图, 原理图,封装图。 1.3 百兆网口连接线的介绍 1.3.1 百兆需要使用的线的定义 百…

基于Vue+ELement搭建登陆注册页面实现后端交互

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《ELement》。🎯🎯 &#x1…

代码随想录算法训练营 动态规划part17

一、回文子串 647. 回文子串 - 力扣&#xff08;LeetCode&#xff09; class Solution {public int countSubstrings(String s) {boolean[][] dp new boolean[s.length()][s.length()];int ans 0;for (int j 0; j < s.length(); j) {for (int i 0; i < j; i) {if …

stm32无人机-飞行力学原理

惯性导航&#xff0c;是一种无源导航&#xff0c;不需要向外部辐射或接收信号源&#xff0c;就能自主进行确定自己在什么地方的一种导航方法。 惯性导航主要由惯性器件计算实现&#xff0c;惯性器件包括陀螺仪和加速度计。一般来说&#xff0c;惯性器件与导航物体固连&#xf…

EMQX Enterprise 5.2 发布:Flow 设计器,Amazon Kinesis,Azure Event Hubs

EMQX Enterprise 5.2.0 版本现已正式发布&#xff01; 新版本带来了一系列重磅更新&#xff0c;最令人瞩目的是可拖拽的可视化 Flow 设计器&#xff0c;它可以帮助企业快速创建、测试和部署数据集成。同时&#xff0c;我们新增了对 Amazon Kinesis 和 Azure Event Hubs 的支持…

Flowable主要子流程介绍

1. 内嵌子流程 &#xff08;1&#xff09;说明 内嵌子流程又叫嵌入式子流程&#xff0c;它是一个可以包含其它活动、分支、事件&#xff0c;等的活动。我们通常意义上说的子流程通常就是指的内嵌子流程&#xff0c;它表现为将一个流程&#xff08;子流程&#xff09;定…

【再识C进阶3(上)】详细地认识字符串函数、进行模拟字符串函数以及拓展内容

小编在写这篇博客时&#xff0c;经过了九一八&#xff0c;回想起了祖国曾经的伤疤&#xff0c;勿忘国耻&#xff0c;振兴中华&#xff01;加油&#xff0c;逐梦少年&#xff01; 前言 &#x1f493;作者简介&#xff1a; 加油&#xff0c;旭杏&#xff0c;目前大二&#xff0c;…

Linux 链表示例 LIST_INIT LIST_INSERT_HEAD

list(3) — Linux manual page 用Visual Studio 2022创建CMake项目 * CmakeLists.txt # CMakeList.txt : Top-level CMake project file, do global configuration # and include sub-projects here. # cmake_minimum_required (VERSION 3.12)project ("llist")# I…

Remix 2.0 正式发布,现代化全栈Web框架!

9 月 16 日&#xff0c;全栈 Web 框架 Remix 正式发布了 2.0 版本&#xff0c;Remix 团队在发布 1.0 版本后经过近 2 年的持续努力&#xff0c;发布了 19 个次要版本、100 多个补丁版本&#xff0c;并解决了数千个问题和拉取请求&#xff0c;终于迎来了第二个主要版本&#xff…

【数据结构】二叉搜索树与Map和Set

目录 ♫二叉搜索树 ♪什么是二叉搜索树 ♪二叉搜索树的特性 ♪模拟实现二叉搜索树 ♫Map ♪什么是Map ♪Map的内部类 ♪Map的常用方法 ♪Map的遍历 ♫Set ♪什么是Set ♪Set的常用方法 ♪Set的遍历 ♫二叉搜索树 ♪什么是二叉搜索树 二叉搜索树又称二叉排序树&#…

多线程带来的的风险-线程安全

多线程带来的的风险-线程安全 ~~ 多线程编程中,最难的地方,也是一个最重要的地方&#xff0c;还是一个最容易出错的地方,更是一个面试中特别爱考的地方.❤️❤️❤️ 线程安全的概念 万恶之源,罪魁祸首是多线程的抢占式执行,带来的随机性.~~&#x1f615;&#x1f615;&…

14:00面试,14:06就出来了,问的问题过于变态了。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到5月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…

redis安装问题

title: “Redis安装问题” createTime: 2022-01-04T20:47:0608:00 updateTime: 2022-01-04T20:47:0608:00 draft: false author: “name” tags: [“redis”] categories: [“install”] description: “测试的” title: redis安装可能遇到的错误 createTime: 2022-01-04T20:47…

第52节:cesium 3DTiles模型特效+选中高亮(含源码+视频)

结果示例: 完整源码: <template><div class="viewer"><vc-viewer @ready="ready" :logo="false"><vc-navigation

【【萌新的FPGA学习之实战流水灯】】

萌新的FPGA学习之实战流水灯 实验任务 本节的实验任务是使用领航者底板上的两个 PL LED 灯顺序点亮并熄灭&#xff0c;循环往复产生流水灯的效 果&#xff0c;流水间隔时间为 0.5s。 1MHz&#xff1d;1000000Hz 10的6次方 1ns&#xff1d;10的-9次方秒 开发板晶振50Mhz 计算得…

自主研究,开发并产业化的一套UWB精确定位系统源码 UWB源码

UWB (ULTRA WIDE BAND) 技术是一种无线载波通讯技术&#xff0c;它不采用正弦载波&#xff0c;而是利用纳秒级的非正弦波窄脉冲传输数据&#xff0c;因此其所占的频谱范围很宽。UWB定位系统研发团队依托在移动通信&#xff0c;雷达&#xff0c;微波电路&#xff0c;云计算与大数…

全国职业技能大赛云计算--高职组赛题卷②(容器云)

全国职业技能大赛云计算--高职组赛题卷②&#xff08;容器云&#xff09; 第二场次题目&#xff1a;容器云平台部署与运维任务1 Docker CE及私有仓库安装任务&#xff08;5分&#xff09;任务2 基于容器的web应用系统部署任务&#xff08;15分&#xff09;任务3 基于容器的持续…

Qt/C++音视频开发55-加密保存到文件并解密播放

一、前言 为了保证视频文件的安全性&#xff0c;有时候需要对保存的视频文件加密&#xff0c;然后播放的时候解密出来再播放&#xff0c;只有加密解密的秘钥一致时才能正常播放&#xff0c;用ffmpeg做视频文件的加密保存和解密播放比较简单&#xff0c;基于ffmpeg强大的字典参…

FPGA:卷积编码及维特比译码仿真

FPGA&#xff1a;卷积编码及维特比译码仿真 本篇记录一下在FPGA中完成卷积编码和维特比译码的过程&#xff0c;通过代码解释编码的过程和译码的过程&#xff0c;便于理解&#xff0c;同时也方便移植到其他工程中。 1. 准备工作 卷积编译码IP核—convolutionIP核和viterbiIP核…