toB企业数据仓库搭建流程记录

一、背景介绍

公司已发展到一定阶段,需要搭建数据中台来整合各条业务线的数据。一方面,当前的报表数据皆是从业务数据库计算得到,OLTP数据库基于业务系统而生,并不适合进行分析计算,常常需要join很多表,效率低下,且影响业务数据库性能。另一方面,公司每条业务线的数据质量参差不齐,命名、更新逻辑杂乱无章,废弃字段繁多,可用性较差。数据中台的作用就是将各业务线有潜在分析价值的数据整合起来,统一存储、分析,既可以支撑公司管理人员的决策,也可以为上层应用提供数据接口。

二、建设大纲

《大数据之路》

1、数据调研

业务调研

交付物:《业务数据表目录》
最好有各业务表之间的关联关系或者数据模型。该阶段的目的是尽可能搞清楚每张表的业务功能,包括表含义、字段含义、更新逻辑等。大部分情况下这种阶段会持续很久,且是长期的,因为业务表太多了,不可能等我们全部理解完毕再开始搭建数仓。先挑最重要的业务过程相关的表进行调研,之后再进行迭代是比较现实的做法。

需求分析

交付物《业务分析需求文档》
与运营、市场等对报表有需求的部门沟通,归纳总结他们的需求,他们需要哪些数据,怎样的数据,哪些数据会对他们的工作有帮助。

2、数据域划分

分析业务过程

交付物:《业务过程与数据域对应表》
业务过程是为达成业务目标而设定一系列标准化的业务行为事件。换句话说,充分理解公司的业务,从数据分析的角度将整个业务分成一个个不可分割的小部分,每一个小部分就叫做一个业务过程。可以从用户的行为轨迹入手进行划分。例如留资、跟进线索、下单、支付、审核等等。原则上每个业务过程会对应业务数据库一张主事实表。再根据这张主事实表找到与该业务过程相关的所有表。
将业务数据表按照业务过程分类是数仓建设前期非常重要的一步。

划分数据域

交付物:《业务过程与数据域对应表》
公司业务线很长,且涵盖多个部门的时候,可以把业务过程按照部门划分数据域,每个数据域之间数据相对独立。例如营销域、交易域、应用域。每个业务过程唯一对应一个数据域。

定义维度

构建一致性维表

交付物《数仓维度属性文档》
维度是维度建模的灵魂。对于维度的理解决定了最终数仓质量的好坏。维度是业务过程的环境描述。维度是我们分析业务过程的角度。每个维度都是一个类属。维度表中的每行数据是一个个该类属的实体。
**维度的确定往往是在不同里找相同的过程。**不同的订单,卖家可能是一样的,商品可能是一样的,买家也可能是一样的。那么卖家、商品、买家就是维度。标准的维度表和事实表应该是一对多的关系。
维度属性是描述维度的信息。例如卖家的行业、名称、信用度。
在分析过程中,往往维度是group by的字段,维度属性是where的字段。
一致性维度是指不同的业务线中该维度的含义是相同的。例如时间维度,地区维度。用户维度或者租户维度的含义可能相同也可能不同,这也是我们前期需要明确的问题之一。一致性维度保证了不同数据域进行交叉查询时不出现错误数据。

3、构建总线矩阵

交付物《数仓总线矩阵》
形如:
在这里插入图片描述
总线矩阵表达的是维度与各业务过程的对应关系。方便将来不同业务过程的交叉查询。

4、明确分析指标

交付物《指标命名规范》《指标定义文档》《数据分析指标口径》
指标的生成需要一套完整的逻辑模型。因为运营人员大概率不懂技术,技术人员对业务的理解也有限,他们想看的数据和我们认知里的这种数据或许并不相同。不统一定义就很容易出现口径不一致的情况。

5、规范定义

交付物:《数仓建设名词口径》《数仓建设命名规范》《数仓生命周期管理规范》
此阶段对以后数仓建设和表开发制定规范。不同的技术架构必然有不同的规范。我们采用阿里云的框架,所以大部分规范都参考了阿里云官方文档。开发过程中一定会遇到很多细节上的问题,所以开发规范是动态完善的。搭建数仓的原则之一就是迭代开发,不要妄想一步到位。

6、明细模型设计

事实表

交付物《事实表数据字典》《各业务过程数据模型》
之前已经将业务数据表按照业务过程分好了类。现在需要设计每个业务过程对应的事实表的表结构。事实表通常由主键、维度、度量组成。维度是外键,度量是有统计价值的数值型维度属性。理想的事实表是没有维度属性的,但现实情况是,经常会有字段无法归入任何一个维度。例如订单事实表中,订单状态、订单类型这类字段,只能归入“订单”维度中。然而订单并没有维度表,我们的做法是抽象出一张“订单杂项维度表”,相当于把订单也当做了一种维度,然后将这张表“维度退化”到订单事实表。杂项维度表只存在于逻辑数据模型,实际上表中的字段就存放在对应的事实表中。
我们从主事实表中挑选可能会分析到的字段,再根据依赖关系(也就是外键)确定涉及到的维度,最后将这些维度中分析频率高的维度属性冗余到事实表中。当然,确认“分析频率高的维度属性”也是只有实际开发中才能做到。也是需要优化迭代的一项。

维度表

交付物《维度表数据字典》
维度表的搭建与事实表大同小异。只是很多公司(包括我们公司)的业务数据库中并没有对应的维度表,需要我们从各种事务记录表中抽取字段作为维度属性。
常常会出现层级维度。例如地区维度,国家、省市区。例如商品,sku,类目。层级维度的处理方法有很多,我们采用了最简单的扁平化处理方案。将父维度的维度属性冗余到子维度中,因为我们的维表数据量很小,冗余也不会占用多少空间,同时还保持了星型模型。

7、汇总模型设计

构建公用汇总模型(DWS)

构建应用汇总模型(ADS)

8、代码开发

9、部署运维

三、技术细节

四、问题记录

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
搭建一个数据仓库的步骤和代码取决于你要使用的技术栈和具体的业务需求,这里提供一个基本的搭建步骤和代码示例: 1.需求分析和设计 在开始搭建数据仓库之前,需要先进行需求分析和设计。主要包括: - 数据仓库的目标和业务需求 - 数据源的类型和数量 - 数据模型设计和数据清洗规则 - 数据仓库的架构设计和容量规划 - 数据仓库的查询和分析需求 2.搭建基础设施 在进行数据仓库搭建之前,需要先搭建好基础设施,包括: - 数据库服务器和存储设备 - 数据库管理系统 - ETL(抽取、转换、加载)工具 - 数据可视化工具 3.数据抽取和清洗 数据抽取和清洗是数据仓库搭建的重要步骤,需要使用 ETL 工具进行。具体步骤包括: - 从数据源中抽取数据 - 对数据进行清洗、转换、合并等处理 - 将处理后的数据加载到数据仓库中 以下是使用 Python 和 Pandas 进行数据清洗和转换的示例代码: ```python import pandas as pd # 读取数据源 df = pd.read_csv('source_data.csv') # 数据清洗和转换 df = df.dropna() # 删除缺失值 df['date'] = pd.to_datetime(df['date']) # 转换日期格式 df['sales'] = df['sales'] * 1000 # 转换货币单位 # 保存处理后的数据到 CSV 文件 df.to_csv('cleaned_data.csv', index=False) ``` 4.数据仓库建模和加载 建立数据模型是数据仓库搭建的关键步骤之一,需要根据业务需求设计合适的数据模型。具体步骤包括: - 设计维度表和事实表 - 设计数据架构 - 加载数据到数据仓库中 以下是使用 SQL Server 建立数据模型的示例代码: ```sql -- 创建维度表 CREATE TABLE dim_date ( date_key INT PRIMARY KEY, date DATE, year INT, month INT, day INT ); -- 创建事实表 CREATE TABLE fact_sales ( date_key INT, product_key INT, sales DECIMAL(18,2), CONSTRAINT fk_date_key FOREIGN KEY (date_key) REFERENCES dim_date (date_key), CONSTRAINT fk_product_key FOREIGN KEY (product_key) REFERENCES dim_product (product_key) ); -- 加载数据到维度表 INSERT INTO dim_date (date_key, date, year, month, day) SELECT DISTINCT CAST(date AS INT), date, YEAR(date), MONTH(date), DAY(date) FROM cleaned_data; -- 加载数据到事实表 INSERT INTO fact_sales (date_key, product_key, sales) SELECT dim_date.date_key, dim_product.product_key, cleaned_data.sales FROM cleaned_data JOIN dim_date ON cleaned_data.date = dim_date.date JOIN dim_product ON cleaned_data.product = dim_product.product; ``` 5.数据可视化和分析 数据可视化和分析是数据仓库的重要应用之一,需要使用相应的工具进行。具体步骤包括: - 使用 BI 工具进行数据可视化和报表设计 - 使用 SQL 进行数据查询和分析 以下是使用 Power BI 进行数据可视化和报表设计的示例: ![Power BI 示例图](https://i.imgur.com/GlWD8Yl.png) 以上是基本的数据仓库搭建步骤和代码示例,具体的实现方式和代码会根据不同的技术栈和业务需求而有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值