基于阿里onedata思想,深入剖析数据仓库方法论(建议收藏)

学而知之@ 学而知之@     2022-12-12     374

关键词:

摘要:今天分享的主要内容是基于百度的数据仓库方法论(精华版)

分享时间:2021年6月2号

分享内容:石老师

摘要整理:皮卡丘

主要内容:

    1. 数据中台简介

    2. 数据仓库方法论

    3. 数据仓库项目实践

一、数据中台简介

1.1、数据中台:

    数据中台是一套可持续 "让企业的数据用起来" 的机制,是一种战略选择和组织形式,是依据企业特有的业务模式和组织架构,通过有形的产品和实施方法论支撑,构建一套持续不断把数据变成资产并服务于业务的机制。

1.2、数据中台核心内容:

  • 数据相关的工具、产品和技术:

    • 批量数据采集:sqoop、datax...

    • 离线数据处理:HIVE、Spark

    • 实时数据处理:SparkStreaming、Flink

  • 数据资产:

    • 公司业务本身产生和沉淀的数据

    • 公司运作产生的数据(如财务、行政)

    • 第三方数据:购买、爬虫...

  • 数据管理:

    • 相关数据管理技术和概念,包括:数仓、数据建模、数据质量、数据规范、数据安全、元数据管理等

1.3、数据中台架构:

1.4、数据中台、数据仓库、数据平台之间的区别:

  • 数据中台:

    • 数据中台是企业级的逻辑概念,体现企业D2V(Data to Value) 的能力,为业务提供服务的主要方式是数据API

    • 数据中台距离业务更近,为业务提供速度更快的服务

    • 数据中台是建立在数据仓库和数据平台之上,是加速企业从数据到业务价值的过程的中间层

  • 数据仓库:

    • 数据仓库是一个相对具体的概念,是存储和管理一个或者多个主题数据的集合,为业务提供服务的方式主要是分析报表

    • 数据仓库是为了支持管理决策分析

  • 数据平台:

    • 数据平台是在大数据基础上出现的融合结构化和非结构化数据的数据基础平台,为业务提供服务的方式主要是提供数据集

二、数据仓库方法论

2.1、离线平台:数据化运营(想要什么)

    • 当前和过去一个季度或者 一个月的销售趋势如何?

    • 哪些商品热销?

    • 哪些商品销售不好?

    • 哪些客户购买能力比较强?

    总结:获取能统计对应指标的数据 

2.2、离线平台主要特点:

    • 对分析需求最擅长,也是最成熟的,使用最广泛的 

    • 开源的解决方案和商业性的解决方案很多

    • 是构建公司和企业数据平台的根本和基础

    • 是目前数据平台的主战场

2.3、数据平台架构:

2.4、HIVE离线数据平台架构:

  • 在大数据出现之前,离线数据平台就是数据仓库,数据部门也就是数据仓库部门

  • hadoop出现之前,数据仓库的主要技术是商业化数据,比如SQL Server、Oracle、DB2等

  • 随着数据量的爆炸性增长,Hadoop的MapReduce、Spark、Hive等大数据技术被应用到数据仓库中

    • 离线数据平台另一关键技术是数据的建模:维度表、事实表 

    • 离线数据内容建设会对精心加工后的数据进行分层: 

      • ODS原始数据层

      • DWD明细数据层 

      • DWS汇总层 

      • APP数据集市层

2.5、数据技术:OLTP&OLAP(扩展)

  • OLTP:(online transaction Processing):

    • OLTP数据库,如商业性的Oracle、MS SQL Server和MySQL等关系数据库 

    • 主要是基本的、日常的事务处理,例如银行交易或者进行增删改查等 

    • OLTP核心需求:单条记录的高效快速处理,索引技术、分库分表

  • OLAP:analysis

    • OLAP数据库,专门的分析型数据库,侧重决策支持 

    • OLAP一般只需要处理数据查询请求,数据都是批量导入的,因此通过列存储、列压缩和位图索引等技术可以大大加快响应请求速度

2.6、数据仓库建模技术:

    三种搭建数据仓库的方式:

    • 传统OLTP数据库中搭建 

    • 商业性数据仓库产品中搭建(MPP架构) 

    • 基于Hadoop(HIVE)来搭建 

  • 不管哪种方式都会面临以下问题: 

    • 怎么组织数据仓库中的数据

    • 怎么组织才能使得数据使用最为方便和便捷

    • 怎么组织才能使得数据仓库具有良好的可扩展性和可维护性

2.7、OneData指导方针:

  • 首先,进行充分的业务调研和需求分析,这是数仓建设的基石

  • 其次,进行数据总体架构设计,主要是根据数据域对数据进行划分;按照维度建模理论,构建总线矩阵,抽象出业务过程和维度

  • 再次,对报表需求抽象整理出相关指标体系,使用OneData工具完成指标规范定义和模型设计

  • 最后,代码研发和运维

三、数据仓库项目实战

3.1、需求场景:

  • 场景:用车日期2020-09-01到2020-10-01各个城市的应单率,接单率,支付单量

  • 分析:各个城市的用车情况

  • 落地运营:便于给运营或者产品提供数据分析资料

3.2、数据调研

3.2.1 整理现状

  • 收集现有报表:在公司目前的平台中查询现有的报表,比如报表系统,邮件系统以及各个定时任务(crontab)中

  • 确认报表有效性:

    • 定位报表中使用的表数据是否近3个月有更新

    • 可通过报表访问量,如三个月内无访问可认为不再有效

    • 不确定的报表可暂时关闭,3个月后无人反馈则也可认为无效

3.2.2 维度指标拆解:

  • 数据域划分:数据域指面向业务分析,将业务过程或者维度进行抽象的集合,业务过程可 以概况为一个个不可拆分的的行为事件。当你面对一个全新的业务领域时,做数 据域的划分会帮助你认识全局,规划底层的整体建设。

功能/业务模块
业务动作
订单管理
取消,已完成

    

  • 维度拆解:构建一致性维度的矩阵,所谓一致性维度即是抽象出来的一些通用的维度。比如商品的库存以及商品的大区,对应的供应商,以及分销渠道,那么大区一类的维度便可以统一归为地区维度,其他的则分别归为供应商/分销渠道/商品基础信息/时间等维度,统一放置在一致性维度表中。一致性维度由需求衍生,商品域需求方关注的一些通用维度如下:

数据域
一致性维度
表名
商品
区域
dim_city_ymd

商品基础信息
dim_prd_info_ymd

分销渠道
dim_prd_dis_ymd

供应商
dim_supp_ymd

时间
dim_date_ymd
  • 指标拆解:

数据域
衍生指标

已售库存

剩余库存

总库存

......

3.2.3 数据源确认:

  • 对接研发:通过系统开发确认数据源情况

  • 熟悉系统:

    • 研发确认

    • 产品经理

    • 原有报表系统

  • 表源确认:

生产库
生产表
同步表
同步job
描述
a_mysql
orders
ods_orders
10012
订单详情
a_mysql
products
ods_products10013商品详情
a_mysql
aisles
ods_aisles10014货架详情
a_mysq
departmentsods_departments
10015
部门详情

3.3、模型设计

3.3.1 选择业务过程:

  • 数据模型必然来自于某一个业务流程,选取商品域中的库存维护 的过程,如上面所说,库存维护会引起产品库存数量的变动,业务需 要对这一业务过程产生的结果进行关注

3.3.2 声明粒度:

  • 粒度用于确定事实表中一行所表示业务的细节层次,决定了维度模型的扩展性,在选择维度和事实之前必须先声明粒度

  • 明确的粒度能确保对事实表中行的意思的理解不会产生混淆,保证所有的事实按照同样的细节层次记录

  • 在设计事实表的过程中,粒度定义得越细越好, 建议从最低级别的原子粒度开始,因为原子粒度提供了最大限度的灵活性,可以支持无法预期的各种细节层次的用户需求

  • 比如:在商品域的库存表中,最细的粒度就是商品id。主键则为productid

3.3.3 确定维度:

  • 注意事项:

    • 尽可能生成丰富的维度属性

    • 尽可能多地给出包括一些富有意义的文字性描述

    • 尽量沉淀出通用的维度属性

    • 维表设计的时候不要把所有的ods表字段都放进来,每个字段都应该明确含义

  • 维表遵循原则:

    • 现有报表已有的维度+和业务人员的沟通时他们关心的其他维度+部分明确含义未来有场景可能使用的维度 

    • 主键:维表应该使用主键标识其唯一性,唯一的主键,外键标注 

    • id与文字描述应该同时存在,id作为不同表关联,名称用于报表展示 

    • 通用维度应沉淀至维表,做好封装,避免下游各自建立逻辑导致不一致

    • 规范统一

  • 物理模型:

    • 物理设计阶段意味着需要将具体的来源表以及来源字段确认下来,如果逻辑复杂,具体的逻辑也可以落下来

3.3.4 确定事实:

  • 指标拆解:确定事实,即为确定指标。在调研的过程中收集到很多指标,且都已经完成了规范的命名

  • 事实表设计:

    • 详细步骤可以参照维表进行实施

3.4、模型开发

  • 根据前面构建的逻辑模型以及mapping文档进行HQL脚本的编写

3.5、模型验证及调整、上线发布

写在最后:

    关于数据仓库的文章千千万万,本文只代表了作者的一些认识和理解,如果兄弟们觉得有不妥之处欢迎留言讨论。

    识别下方二维码,关注后,点击资 “料获取”,即可获取免费学习资料,并且资料在不断更新中。记得关注、点赞、收藏哦~

听说一键三联的朋友都暴富了,赶紧躁动起来吧,老铁们!!

基于阿里(onedata)的数仓体系建设

...里巴巴内部进行数据整合和管理方法体系和工具,其方法论对数仓建模依然有借鉴之处,一起来温故下来自《大数据之路:阿里巴巴大数据实践》的经验之谈吧。一、指导思想首先,要进行充分的业务调研和需求... 查看详情

基于阿里(onedata)的数仓体系建设(代码片段)

...五、模型设计六、维度设计七、事实表设计八、其他规范OneData是阿里巴巴内部进行数据整合和管理方法体系和工具。一、指导思想首先,要进行充分的业务调研和需求分析。其次,进行数据总体架构设计,主要是根... 查看详情

数仓|数据模型onedata实践(代码片段)

...neData是阿里巴巴多年大数据开发和治理实践中沉淀总结的方法论,包含OneModel、OneService、OneID三个概念。OneModel统一数据构建和管理将指标定位细化为:原子指标、时间周期、修饰词(统计粒度、业务限定,etc)ÿ... 查看详情

干货:解码onedata,阿里的数仓之路。

免费开通大数据服务:https://www.aliyun.com/product/odps 据IDC报告,预计到2020年全球数据总量将超过40ZB(相当于4万亿GB),这一数据量是2013年的10倍。正在“爆炸式”增长的数据的潜在巨大价值正在被发掘,它有可能成为商业世界的... 查看详情

深入剖析!springboot集成mysql(代码片段)

...验阿里一般情况下有五轮面试,其中大概有四轮都是基于项目的技术在问实现机制、改进技术方案、做的认为不足的地方,技术栈的实现原理,有没有其他替代方案,涉及中间件的原理等等。重视技术原理对自己... 查看详情

深入剖析神经网络的运行机理及实现

...神经网络现在是大火特火。因为目前的深度学习模型都是基于神经网络进行的改进和加深,所以要想对深度学习有一些较深入的研究,先熟悉和了解人工神经网络是非常有帮助的。本文基于神经网络实现一个手写体数字识别模型... 查看详情

深入剖析hive的锁和事务机制

深入剖析HIVE的锁和事务机制1从调度系统对HIVE作业的调度策略聊起大家知道,依托HIVE构建数据仓库时,我们一般会通过调度系统精心编排HIVESQL作业,以避免多个作业并发写同一张表或同一个表分区;同时ADHOC的数... 查看详情

深入剖析hive的锁和事务机制

深入剖析HIVE的锁和事务机制1从调度系统对HIVE作业的调度策略聊起大家知道,依托HIVE构建数据仓库时,我们一般会通过调度系统精心编排HIVESQL作业,以避免多个作业并发写同一张表或同一个表分区;同时ADHOC的数... 查看详情

深入剖析物联网行业现状及发展

BAT大佬为何要布局物联网阿里、京东、华为、腾讯相继布局物联网,物联网到底存在哪些商业价值?大佬都在发力,我们该何去何从?阿里物联网生态系统技术大解密”1234”战略,定位于物联网基础设施搭建者天猫精灵,智能... 查看详情

老司机带带我:数仓建模架构|维度建模剖析与案例演示(代码片段)

    作者基于多年的大数据处理经验,当前管理着100PB+数据仓库和2000+节点的集群。持续系统化给大家分享一下关于数据仓库建设的经验总结。本系列既有数据仓库的形而上学理论体系,也有结合公司业务的实践&#... 查看详情

老司机带带我:数仓建模架构|维度建模剖析与案例演示(代码片段)

    作者基于多年的大数据处理经验,当前管理着100PB+数据仓库和2000+节点的集群。持续系统化给大家分享一下关于数据仓库建设的经验总结。本系列既有数据仓库的形而上学理论体系,也有结合公司业务的实践&#... 查看详情

深入理解stream之原理剖析

...然是JDK1.8。所以,我们有必要聊一聊Java8的一些新特性。深入理解lambda的奥秘深入理解Stream之原理剖析深入理解Stream之foreach源码解析深入浅出NPE神器Optional谈谈接口默认方法与静态方法深入浅出重复注解与类型注解深入浅出JVM元... 查看详情

阿里架构师带你深入剖析redis,横扫一切redis面试题

前言作为Java开发程序员【Redis】是你必须要掌握的知识Redis是互联网技术领域使用最为广泛的存储中间件,它是「RemoteDictionaryService」的首字母缩写,也就是「远程字典服务」。Redis以其超高的性能、完美的文档、简洁易... 查看详情

阿里云quickbi——让人人都成为分析师

...要:在3月29日深圳云栖大会的数据分析与可视化专场中,阿里云产品专家潘炎峰(陌停)对大数据智能分析产品QuickBI进行了深入的剖析。大会现场的精彩分享也赢得观众们的一直认可和热烈的反响。QuickBI诞生于阿里巴巴集团自... 查看详情

实战并发编程-01多线程读写同一共享变量的线程安全问题深入剖析

文章目录示例CPU的内存模型Java内存模型基于内存模型分析缓存一致性问题示例来看个需求:统计服务器某个接口的访问次数accessCount字段表示接口被访问的次数,每次访问接口的时候就调用一次access()方法,访问次数+1,累积下... 查看详情

深入threadlocal原理剖析(代码片段)

分享一下最近看的ThreadLocal的源码的一些体会。文章目录1.了解ThreadLocal简介使用(是线程安全的)2.源码解析--探究实现思路threadLocals变量与ThreadLocalMapset(Tvalue)方法get()方法remove()方法实现思路总结3.InheritableThreadLocal与继... 查看详情

我在阿里做了5年数据架构师,想告诉你这些数据仓库的方法论(代码片段)

文章目录一、大数据体系整体架构1.1、来源系统1.2、原始数据层1)将数据仓库与业务系统分隔开2)分担业务系统的报表任务1.3、数据仓库1.3.1、基础数据层1.3.2、主题层1.3.3、模型层1.4、数据应用层1.4.1、数据反哺1.4.2、... 查看详情

深入剖析linux磁盘管理

...是linux管理必备的一项技能。在linux中“一切皆文件”的思想贯彻整个linux的学习中,包括像是磁盘等的硬件也是在linux的/dev/目录下类似于文件形式的存放,常见的SATA口USB优盘或是SCSI口的硬盘在linux中是以/dev/sd[a-p]开头的文件,... 查看详情