维度建模基本流程总结
一、维度建模基本流程图
数据RD进行业务调研和数据现状调研,产出符合相关模版规范的业务知识文档和数据现状文档。数据PM也会调研相关业务产出需求设计文档,三方参与需求评审,评审通过后基建数据RD进行需求拆解,产出技术方案,三方进行技术方案评审,如果技术方案评审通过进入基建需求池、排期、开发、上线并做相关数据运营动作。

二、维度建模流程详情
详细流程主要介绍每个步骤的参与方、行动详情、产出结果并明确相关的check机制。
2.1 业务调研
关键动作
业务调研主要是业务方、数据PM、数据RD参与,数据RD具体动作如下:
1.理解业务环境,通过和业务方代表交流发现需求,用于理解他们基于关键性能指标、竞争性商业问题、决策制定过程、支持分析需求的目标。
2.梳理业务过程,通过和源系统专家交流信息、业务方的描述信息梳理业务过程,业务过程是一个不可拆分的行为事件。
3.分析关键业务和核心问题,分析关键业务及其动作是什么,明确业务现阶段所关注的核心问题,对核心问题的理解有助于我们覆盖业务场景。
核心成果
业务调研完成后,需要编写业务知识文档,此文档可以按照如下思路整理
1.业务简介,源系统业务简单概述,明确决策过程和分析目标等。
2.统一业务概念,将源数据(即业务系统)中隐含的、有歧义的概念进行清晰化。
3.业务流程介绍,重点关注源系统的ER模型,整理业务流程图,梳理业务基本动作等。
4.总结业务对数据的需求,重点梳理业务指标。
业务调研步骤可重可轻,重:基建层面从质量、效率、成本和扩展性长远考虑需要深入调研并理解。①质量: 通过数据集成和一致性建设,提升数据指标的一致性及及时性;②效率:提升计算、存储、查询效率,提升用户体验;③成本:减少不必要的数据冗余、提升模型复用度,降低存储、计算以及维护开发、降低成本。④扩展:屏蔽业务及上游系统的变更影响,能灵活快速兼容业务变更以及支撑新业务。
轻:根据需求紧急程度,结合原有调研的相关知识,快速支持业务需求。
2.2 数据现状调研
关键动作
数据现状调研主要是数据PM、数据RD参与,关键动作如下:
1.数据PM需要梳理历史定义的数据指标口径,这部分口径解决什么问题(随着时间推移历史指标口径不明确,解释不清等)。
2.从数据RD角度需要梳理之前产出的模型、看板、数据产品,不同的交付方式所对应的模型是否相同,有没有口径不统一的风险。同时将这部分涉及的底表列出来,还没有接入的提前接入。
核心成果
1.数据RD明确指标如何使用:主要是通过表格描述清楚之前的看板和产品使用的模型、模型对应的指标。
2.历史指标及其口径,从数据PM角度需要了解之前定义的数据指标口径,这部分口径解决什么问题。
3.初步给出一些优化改进建议,比如重复逻辑下沉、重复开发优化等。
2.3 主题抽象&总线矩阵
关键动作
主要由数据RD完成,关键动作如下:
1.明确数仓建设的相关分层和命名规范。
2.明确数据域的抽象划分。
3.明确主题、业务过程及其对应关系。
4.明确业务过程和一致性维度关系。
核心成果
产出相关文档,主要包含①主题、词根和主题对应业务过程关系表;②主题和一致性维度矩阵,方便从宏观认识整个数仓;③每个主题下业务过程和一致性维度关系矩阵。
2.4 数据需求设计
关键动作
主要由数据PM完成,关键动作如下:
1.明确背景和业务价值。
2.如果是涉及到产品化的项目需要明确产品或报表工具,设计相关原型图。如果只提供数据集,需要明确指标如何使用,作用的结果。
3.定义清楚维度和指标(偏应用层指标)
4.明确期望交付时间、交付结果,数据回刷范围等。
关键产出就是需求文档(PRD)。
需求PRD产出后需要组织业务方、数据RD和PM进行需求评审,主要check 需求评审文档,是否符合既定规范,价值描述清晰、维度和指标口径,数据范围、交付时间等。
2.5 数据需求拆解
关键动作
主要由数据RD完成,关键动作如下:
事实表设计:
1.选择业务过程:选择主题域明确主题下的业务过程,选择具体的业务过程(在主题域内根据情况会抽象新增/合并业务过程)开始拆解。
2.确定事实表,根据需求设计合适的事实表类型,事务事实表、周期快照事实表、累积快照事实表。
3.声明粒度,在从给定的业务过程中获取数据时,原子粒度是最低级别的粒度,建议优先关注原子粒度数据开始设计,原子粒度数据能承受无法预期的用户查询,然后根据针对业务公共问题和性能出发设计上卷汇总粒度数据表。
4.确认维度:维度是度量的环境,用来反映业务的一类属性,这类属性的集合构成一个维度,也可以成为实体对象。在实际工作中好的维度设计可以层次递进的反应业务情况
5.确认事实(指标):事实就是度量,一般是对某个业务事件的衡量,通常为数字,如定单量,订单金额等。尽可能包含业务过程下所有原子指标,只选择和业务过程相关的原子指标,统一同类指标的单位。根据规范对指标拆解:①确定原子指标:基于某一业务时间行为下的度量,是业务定义中不可再拆分的指标(比率等指标除外),具有明确业务含义和业务完整定义的名词。原子指标=业务过程(动作)+度量,比如推单量,下单金额,支付金额;②确定派生指标:派生指标=一个原子指标+多个修饰词(可选)+时间周期。可以理解为对原子指标业务统计范围的圈定。比如昨日新用户下单量
6.梳理具体业务过程下的指标维度矩阵。
维表表设计
1.选择实体
维度表设计首先要选择实体,也就是维度表所要描述的抽象对象。如,互联网电商在交易过程中涉及到的实体有:买家、卖家、订单、广告等等,当然还有一些在不同业务场景下衍生出来的一些业务抽象实体,如优惠券、活动、商圈等都可以作为维度实体。 实体的选择主要是结合业务流程,在需要建模的业务流程环节涉及到了哪些参与者,这些不同的参与者便是维度表描述的实体对象,维度表中的属性,就是用来区分不同实体的特性。
2.确定主维表
确定主维表,主要是识别出维度表的主要数据来源。通常,业务系统中也会将相同类型业务实体进行统一存储(即一张表),亦或是在大型企业有建设业务中台会提前做同类业务实体的数据融合(如,商品中心、用户中心等)。但在没有类似业务中台可以直接获取全量维度实体数据的情况下,就需要自行确定业务实体数据的来源,并做融合。一般情况会将常规主要业务流程中产生的业务系统数据做为主维度表,因为其一般是维度表的主要数据来源,并且数据准确、丰富。
3.确定辅维表
辅维表存在的目的有两方面。一方面是补全主维表在维度实体的数据;另一方面是为了寻找维度表所表示的业务实体的一些其他属性描述辅助表,这些辅维表用来丰富维度表的属性描述,增强维度表的表现性,同样也能扩展维度表的分析能力。
4.识别维度属性
维度表的维度属性一般可以分为相对稳定的“固化属性”和变动频繁“动态属性“。由于“固化属性”和“动态属性”的变更周期差异巨大,一般会在维度表的构建过程中结合具体的场景进行拆分,一方面是保证维度表能够高效的产出,另一方面也是为追溯历史数据提供合理的技术实现。
注意点:增加文字描述(枚举和中文对应关系);统一单位;统一标志值(0/1,Y/N)等。
关键结果
产出业务过程下的指标维度矩阵。
2.6 技术方案设计和评审
主要由数据RD完成技术方案设计,然后组织PM和RD进行技术方案评审,关键动作如下:
1.原则上遵循公司数仓建模规范或数据仓库工具箱相关规范。
2.编写技术方案,背景部分主要阐述业务痛点和目标;需求梳理主要是明确我们开发的指标维度矩阵;核心模型设计即数仓整体架构设计(服务规范)和表详情设计,表详情设计部分主要明确三个部分①表的中英文名称②指标名和口径③指标加工逻辑和相关数据调研;最后技术方案中明确上线事项和分工排期。
关键结果
产出技术方案,技术方案可以分如下几个模块①项目背景,附上相关PRD和说明文档链接,介绍清楚背景收益等;②问题和风险,对于存在的问题和风险(业务风险、技术风险)应当有对应的方案,如存在风险或问题情况下,仍按需求进行,需要明确相关责任人。③项目计划,明确相关责任人和具体开发排期。④需求调研,调研需求的指标、维度和相关接口。⑤详细设计,第一部分给出整体的设计架构图;第二部分接口设计详情;第三部分数仓模型设计;⑥技术选型,重点关注查询引擎,查询量级,QPS等;⑦上线事项:测试case、上线顺序、上线Check List、承诺产出时间,稳定性保障、降级策略(数据延迟、集群异常等兜底方案是否可以使用T+2的数据,前端进行banner文案提示“数据暂不可用”,对外提供接口方式,应当与数据使用方商定出现无数据情况的后端兜底或者前端兜底。数据内容本身的错误和BUG无法进行兜底,责任由数仓RD来进行负责并处理。)
2.7 数据交付&运营
对相关指标进行绑定录入,编写使用文档等。
相关文章:

维度建模基本流程总结
一、维度建模基本流程图数据RD进行业务调研和数据现状调研,产出符合相关模版规范的业务知识文档和数据现状文档。数据PM也会调研相关业务产出需求设计文档,三方参与需求评审,评审通过后基建数据RD进行需求拆解,产出技术方案&#…...

RocketMQ事务消息
RocketMQ事务消息 RocketMq提供的一种高级消息类型,支持在分布式场景下面保障消息生产和本地事务的一致性 生产者将消息发送到服务端服务端将消息持久化成功后,向生产者返回ACK确认消息发送成功,此时消息状态为待投递,这种状态下的消息称之为…...

大数据处理 - 双层桶划分
分桶法简介其实本质上还是分而治之的思想,重在“分”的技巧上!适用范围: 第k大,中位数,不重复或重复的数字基本原理及要点: 因为元素范围很大,不能利用直接寻址表,所以通过多次划分,逐步确定范围…...

NFC标签读写器隐私协议
【标签读写器】(以下简称“我们”)深知个人信息对您的重要性,并会尽全力保护您的个人信息安全可靠。我们致力于维持您对我们的信任,恪守以下原则,保护您的个人信息:权责一致原则、目的明确原则、选择同意原…...

DocEE:一种用于文档级事件抽取的大规模细粒度基准 论文解读
DocEE: A Large-Scale and Fine-grained Benchmark for Document-level Event Extraction 论文:NAACL2022.pdf (tongmeihan1995.github.io) 代码:tongmeihan1995/DocEE: DocEE: A Large-Scale and Fine-grained Benchmark for Document-level Event Ext…...

ImageCombiner设计源码详解
前言在前面的博客中介绍了一款Java的海报生成器ImageCombiner,原文地址:拿来就用的Java海报生成器ImageCombiner(一),在博文中简单介绍了一下代码以及一个真实的生成案例。但是对源码的介绍不多,本文就针对源码进行深入…...

python基础 | python基础语法
文章目录📚基础语法🐇输入和输出🥕print()输出🥕input()输入🐇 变量的命名🐇条件判断🥕单向判断🥕双向判断🥕多向判断🥕if嵌套🥕三元表达式&#…...

YOLOv6-3.0-目标检测论文解读
文章目录摘要算法2.1网络设计2.2Anchor辅助训练2.3自蒸馏实验消融实验结论论文: 《YOLOv6 v3.0: A Full-Scale Reloading 》github: https://github.com/meituan/YOLOv6上版本参考 YOLOv6摘要 YOLOv6 v3.0中YOLOv6-N达到37.5AP,1187FPS&…...

JAVA集合之Map >>HashMap/Hashtable/TreeMap/LinkedHashMap结构
Map 是一种键-值对(key-value)集合,键不可以重复,值可以重复。常见的实现类有:HashMap、Hashtable、TreeMap、LinkedHashMap等。 HashMap&Hashtable HashMap:数据结构为哈希表,允许使用 n…...

JavaScript从零开始 学习记录(一)
前言 选择视频课程之前,不仅查阅了资料,还询问了网友,最终敲定了学习黑马前端的视频教程,学了5小节,发现挺对自己口味的且从反响来看,还是相当不错的,便打算利用这个寒假学完 笔记范围 从这节…...

C++项目——高并发内存池(3)--central cache整体设计
1.central cache的介绍 1.1框架思想 1.1.1哈希映射 centralcache其实也是哈希桶结构的,并且central cache和thread cacha的哈希映射关系是一致的。目的为了,当thread cache某一个哈希桶下没有内存块时,可以利用之前编写的SizeClass::Index…...

Spring Boot 整合 MyBatis 配置等案例教程
运行环境:JDK 7 或 8、Maven 3.0 技术栈:SpringBoot 1.5、SpringBoot Mybatis Starter 1.2 、MyBatis 3.4 前言 距离第一篇 Spring Boot 系列的博文 3 个月了。《Springboot 整合 Mybatis 的完整 Web 案例》第一篇出来是 XML 配置 SQL 的形式。虽然 XM…...

比特数据结构与算法(第三章_下)队列的概念和实现(力扣:225+232+622)
一、队列(Queue)队列的概念:① 队列只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表。② 入队列,进行插入操作的一端称为 队尾。出队列,进行删除操作的一端称为 队头。③ 队列中的元素…...

c++提高篇——STL容器实现打分系统
一、案例说明 有5名选手:选手ABCDE,10个评委分别对每一名选手打分,去除最高分,去除评委中最低分,取平均分。 二、案例实现 在实现这个系统时,我们规划一下实现的步骤以及细节: 1、创建一个选手类&#x…...

【图片上传记录三】element-ui组件详解与封装(自定义上传、限制文件大小、格式以及图片尺寸)
业务上有需求是前端上传 jpg/png/gif 格式, 并且 尺寸为 150px * 150px,300px*300px,428*428px 的图片 同时在上传的同时需要携带用户的个人信息以及其他额外信息 因此在 element-upload 基础之上 实现这个需求需要在上传前检查图片的大小,格式以及尺寸如何上传也成…...

一个golang版本管理工具
GitHub - moqsien/gvc: GVC is a productive tool to manage your dev environment for multi platforms and machines. | GVC 是一个用于快速配置和管理多机器跨平台的开发环境的生产力工具。 目前,gvc拥有以下功能或特点: go编译器自动安装和添加环…...

SpringBoot整合Spring Security过滤器链加载执行流程源码分析
文章目录1.引言2.Spring Security过滤器链加载1.2.注册名为 springSecurityFilterChain的过滤器2、查看 DelegatingFilterProxy类3.查看 FilterChainProxy类3.1 查看 doFilterInternal方法。3.2 查看 getFilters方法。4 查看 SecurityFilterChain接口5 查看 SpringBootWebSecur…...

Jest使用
一、测试到底测什么 提到测试的时候,即使是最简单的一个代码块可能都让初学者不知所措。最常问的问题的是“我怎么知道要测试什么?”。如果你正在写一个 Web 应用,那么你每个页面每个页面的测试用户交互的方式,就是一个很好的开端…...

定位于企业数字化底座,开箱可用(spring cloud+Vue)基础框架,赶紧收藏!
项目介绍:JVS是什么?JVS是企业级应用构建的基础脚手架,提供开箱即用的基础功能集成,其中集成了账户管理、租户管理、用户权限体系、三方登录、环境配置、各种业务日志等功能,还提供了对接低代码、数据中台的能力。JVS能…...

java字符统计
问题描述 给定一个只包含大写字母的字符串 � S, 请你输出其中出现次数最多的字符。 如果有多个字母均出现了最多次, 按字母表顺序依次输出所有这些字母。 输入格式 一个只包含大写字母的字符串 � S. 输出格式 若干个大写字母,代表答案。 …...

C#:Krypton控件使用方法详解(第八讲) ——kryptonBreadCrumb
今天介绍的Krypton控件中的kryptonBreadCrumb,下面开始介绍这个控件的属性:首先要介绍的是RootItem属性和外观属性:RootItem属性组中包含属性如下:image属性:代表在文字对象的前方插入一个图片,属性值如下图…...

2023从0开始学性能(1) —— 性能测试基础【持续更新】
背景 不知道各位大佬有没遇到上面的情况,性能这个东西到底是什么,还是以前的358原则吗?明显并不是适用于现在了。多次想踏入性能测试门槛都以失败告终,这次就以系列的方式来督促自己真正踏进性能测试的门槛。 什么是性能测试 通…...

如何通过一台 iPhone 申请一个 icloud 邮箱账号 后缀为 @icloud.com
总目录 iOS开发笔记目录 从一无所知到入门 文章目录需求关键步骤步骤后续需求 在 iPhone 自带的邮箱软件中添加账号,排第一位的是 iCloud 邮箱: 选 iCloud 之后: 提示信息是exampleicloud.com,也就是说是有icloud.com为域的邮箱…...

SQL89 计算总和
描述OrderItems表代表订单信息,包括字段:订单号order_num和item_price商品售出价格、quantity商品数量。order_numitem_pricequantitya110105a211100a21200a421121a5510a2119a775【问题】编写 SQL 语句,根据订单号聚合,返回订单总…...

Netty高级应用之:编解码器与群聊天室开发
Netty高级应用之:编解码器与群聊天室开发 文章目录Netty高级应用之:编解码器与群聊天室开发Netty编解码器Java的编解码Netty编解码器概念解码器(Decoder)编码器(Encoder)编码解码器CodecNetty案例-群聊天室聊天室服务端编写聊天室客户端编写Netty编解码器…...

Vue的生命周期
Vue的生命周期是指Vue实例从创建到销毁的过程,它包括了以下几个阶段:初始化、编译、挂载、更新、渲染和销毁。 初始化:Vue实例创建时,会执行初始化过程,主要包括以下几个步骤: 初始化数据:Vue…...

MySQL —— 数据库基础
文章目录1. centos7 安装Mysql2. 数据库的概念3. 数据库下创建库,表4. 库,表 的本质5. 数据库服务器 和 库 ,表的关系6. MySQL架构7. 存储引擎前言: 数据库是对数据进行管理的软件。1. centos7 安装Mysql 需要把系统自带的MySQL给…...

多线程知识点
多线程 基本知识 创建线程的常用三种方式: 继承Thread类实现Runnable接口实现Callable接口(JDK1.5>) public class ThreadTest extends Thread {Overridepublic void run() {System.out.println(this.getName() "..开始.."…...

有序表之红黑树
文章目录1、五个条件2、调整策略2.1 插入调整的情况2.1.1 情况一:插入节点是红色,其父节点也是红色2.1.2 情况二2.1.2 代码实现2.2 删除调整的情况2.2.1 情况一:双重黑节点的兄弟节点也是黑色,且其兄弟的两个孩子也是黑色2.2.2 情…...

HTTP状态码都有哪些?
100:客户必须继续发出请求 101:客户要求服务器根据请求转换HTTP协议版本 二:2xx 200:交易成功 201:提示知道新文件的URL 202:接受和处理、但处理未完成 203:返回信息不确定或不完整 204&#…...