维度设计

维度设计基础

维度的基本概念

  • 维度是维度建模的基础和灵魂。

  • 将度量称为“事实” ,将环境描述为“维度”

  • 维度所包含的表示维度的列,称为维度属性

    • 查询约束条件
    • 分组和报表标签生成的基本来源
    • 据易用性的关键
  • 维度使用主键标识其唯一性

    • 代理键

      • 不具有业务含义的键
      • 一般用于处理缓慢变化维
      • 前台应用系统:商品ID代理键
    • 自然键

      • 具有业务含义的键
      • 数据仓库系统:商品ID自然键

维度的基本设计方法

  • 选择维度或新建维度

    • 维度的唯一性
  • 确定主维表

    • 一般是 ODS 表
    • 直接与业务系统同步
  • 确定相关维表

    • 与主维表存在关联关系
  • 确定维度属性

    • 二个阶段

      • 第一从相关维表中选择维度属性或生成新的维度属性
      • 第二从主维表 中选择维度属性或生成新的维度属性
    • 确定维度属性提示

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

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

        • 一般是编码和文字同时存在
      • 区分数值型属性和事实

        • 查询约束条件或分组统计为维度
        • 参与度量的计算为事实
        • 数值型字段是离散值多为维度
        • 数值型宇段是连续值多为事实
      • 尽量沉淀出通用的维度属性

        • 提高下游使用的方便性
        • 减少复杂度
        • 避免下游使用解析时各自逻辑口径不一致

维度的层次结构

  • 最底层代表最低级别的详细信息
  • 最高层代表最高级别的概要信息
  • 多为嵌入式层次结构

规范化和反规范化

  • 雪花模式

    • 属性层次被实例化为一系列维度,而非单一的维度
    • 多用于联机事务处理系统( OLTP )底层结构
    • 节约存储,减少数据冗余
    • 雪花模型图
  • 单一维

    • 将雪花模型进行单一维度宽表化处理
    • 多用于OLTP 系统:空间换分析查询性能
    • 方便、易用且性能好
    • 单一维度反规则化图

一致性维度和交叉探查

  • 交叉探查定义

    • 日志数据域:统计了商品维度一天的 PV 和UV
    • 易数据域,:统计了商品维度的一天的下单 GMV
    • 将不同数据域的商品的事实合并在一起进行数据探查,如计算转化率,成为交叉探查
  • 交叉探查问题

    • 不同数据域使用维度不一致
  • 维度一致性表现

    • 共享维表

      • 公共维度交叉探查
    • 一致性上卷

      • 一个维度属性是另 一个维度属性的子集
      • 两个维度的公共维度属性结构和内容相同
    • 交叉属性

      • 两个维度具有部分相同的维度属性

维度设计高级主题

维度整合

  • 命名规范的统一

    • 表名 、 字段名等统一
  • 字段类型的统一

    • 相同和相似字段的字段类型统一
  • 公共代码及代码值的统一

    • 公共代码及标志性宇段的数据类型、命名方式等统一
  • 业务含义相同的表的统一

    • 物理实现原则

      • 将业务关系大、源系统影响差异小的表进行整合
      • 将业务关系小、源系统影响差异大的表进行分而治之
    • 集成方式

      • 采用主从表的设计方式

        • 两个表或多个表都有的字段放在主表(主要基本信息)

        • 从属信息分别放在各自的从表中

        • 主表主键

          • 复合主键(建议采用)

            • 源主键和系统或表区别标志
          • 唯一主键

            • 源主键和系统或表区别标志生成标识
      • 直接合并

        • 共有信息和个性信息都放在同一个表中

          如果表字段的重合度较低,则会出现大量空值,对于存储和易用性会有影响,需谨慎选择。

      • 不合并

        • 源表的表结构及主键等差异很大

不同维度类目属性无法统一,引出如何设计维度?

  • 二种方案

    • 方案 1 是将维度的不同分类实例化为不同的维度,同时在主维度中保存公共属性
    • 方案 2 是维护单一维度,包含所有可能的属性
  • 选择方案三个原则

    • 扩展性

      • 当源系统、业务逻辑变化时,能通过较少的成本快速扩展模型,保持核心模型的相对稳定性
      • 高内聚、低耦合思想指导
    • 效能

      • 性能和成本方面取得平衡
      • 牺牲一定的存储成本,达到性能和逻辑的优化
    • 易用性

      • 模型可理解性高、访问复杂度低
      • 用户能够方便地从模型中找到对应的数据表,并能够方便地查询和分析。

水平拆分

  • 两个依据

    • 第一:维度的不同分类的属性差异情况

      • 当维度属性随类型变化较大时

      • 建议采用方案 1:所有可能维度建立在一个维度不切实际

      • 定义一个主维度用于存放公共属性

        • 公共属性一般比较稳定,保证了核心维度的稳定性
      • 同时定义多个子维度包含各自的特殊属性

        • 通过扩展子维度的方式,保证了模型的扩展性
    • 第二:业务的关联程度

      • 相关性较低的业务,耦合在一起弊大于利

垂直拆分

  • 主表:存放稳定 、 产出时间早、热度高的属性
  • 从表:存放变化较快、产出时间晚、热度低的属性

历史归档

  • 同前台归档策略(算法归档)

    • 问题点

      • 前台归档策略复杂,实现成本较高
      • 策略可能会经常变化 ,导致数据仓库归档算法也要随之变化
      • 维护和沟通成本较高
    • 适用场景

      • 前台归档策略逻辑较为简单
      • 且变更不频繁的情况
  • 同前台归档策略(binlog解析)

    • 处理方式

      • binlog日志解析获取每日增量,通过增量 merge方式获取最新的全量数据
      • 可以使用增量日志的删除标志 , 作为前台数据归档的标志
    • 适用场景

      • 物理删除只有在归档时才执行,应用中的删除只是逻辑删除
  • 数仓自定义策略

    • 原则是尽量比前台应用晚归档、少归档
    • 避免出现数据仓库中已经归档的数据再次更新的情况

维度变化

缓慢变化维

  • 重写维度值

    • 不保留历史数据
    • 始终取最新数据
  • 插人新的维度行

    • 保留历史数据
    • 维度值变化前的事实和过去的维度值关联
    • 维度值变化后的事实和当前的维度值关联
  • 添加维度列

    • 保留历史数据
    • 新增维度列:新维度值、旧维度值

快照维表

  • 每日一份维度快照

  • 优劣分析

    • 简单而有效,开发和维护成本低
    • 使用方便,理解性好
    • 存储的极大浪费

极限存储

  • 历史拉链表存储

  • 拉链表处理

    • 透明化

      • 查询视图操作或语法树解析
    • 分月做历史拉链表

      • 每月初重新分区拉链表处理
      • 减少分区存储
  • 优劣分析

    • 产出效率很低,大部分极限存储通常需要t-2

    • 变化频率高的数据并不能达到节约成本的效果

    • 结合劣势处理

      • 在做极限存储前有一个全量存储表 ,全量存储表仅保留最近一段时间的全量分区数据
      • 对于部分变化频率频繁的宇段需要过滤

微型维度

  • 将一部分不稳定的属性从主维度中移出

  • 将它们放置到拥有自己代理键的新表中来实现的

  • 处理逻辑举例

    • 用户 VIP 等级:8 个值
    • 用户信用评价等级:18 个值
    • 两者组合生成:代理键 1~ 144
  • 未使用&劣势分析

    • 局限性:计算所有可能值的组合加载,必须是枚举
    • ETL 逻辑复杂:维护开发成本高
    • 破坏了维度的可浏览性

特殊维度

递归层次

  • 层次结构扁平化

    • 所属层级及结构铺平化结构处理

    • 存在问题

      • 钻或下钻之前,需知类目层级
      • 向下钻取,填充向上类目无法统计
      • 固定层级结构,扩展性差
  • 层次桥接表

    • 加工逻辑复杂,使用逻辑复杂

行为维度

  • 采用算法计算得到

    • 最近一段时间消费地点
    • 行为维度\事实衍生的维度”
  • 行为维度划分

    • 另一个维度的过去行为

      • 买家最近一次访问淘宝的时间
      • 最近一次发生淘宝交易的时间等
    • 快照事实行为维度

      • 买家从年初截至当前的淘宝交易金额
      • 买家信用分值
      • 卖家信用分值
    • 分组事实行为维度

      将数值型事实转换为枚举值

      • 买家从年初截至当前的淘宝交易金额按照金额划分的等级
      • 买家信用分值按照分数划分得到的信用等级等
    • 复杂逻辑事实行为维度

      通过复杂算法加工或多个事实综合加工得到

      • 买家主营类目
      • 商品热度根据访问、收藏、加人购物车、交易等情况综合计算得到
    • 行为维度两个处理原则

      • 第一 ,避免维度过快增长
      • 第二,避免稠合度过高

多值维度

  • 第一种处理方式是降低事实表的粒度

    • 子订单粒度
    • 采用分摊到子订单的方式
  • 第二种处理方式是采用多字段

    • 通过预留宇段的方式
  • 第三种处理方式是采用较为通用的桥接表

    • 灵活高、扩展性更好,但逻辑复杂、开发和维护成本较高
    • 双重计算的风险

多值属性

  • 维表中的某个属性字段同时有多个值,称之为“多值属性”

  • 常见三种处理方式

    • 第一种处理方式是保持维度主键不变,将多值属性放在维度的一个属性字段中

      • 通过 k-v 对的形式放
      • 扩展性好,但数据使用较为麻烦
    • 第二种处理方式也是保持维度主键不变,但将多值属性放在维度的多个属性字段中

      • 数量不固定,则可以采用预留字段的方式
      • 扩展性较差
    • 第三种处理方式是维度主键发生变化, 一个维度值存放多条记录

      • 扩展性好,使用方便
      • 考虑数据的急剧膨胀情况

杂项维度(Junk Dimension)

  • 杂项维度是由操作型系统中的指示符或者标志宇段组合而成的,一般不在一致性维度之列

  • 举列说明

    • 淘宝交易订单的交易类型宇段
    • 话费充值、司法拍卖、航旅等类型
    • 支付状态、物流状态
    • 直接保存在交易表中
  • 将这些字段建立到一个维表中,在事实表中只需保存一个外键即可

总结:
阿里大数据之道里面说了这么多,关于维度建设的核心思想两点:1、主从维表的确定的。2、主从表维度的稳定性,使用度广,脏乱差的数据从表处理。
大家在实践过程中根据自己的应用差异定义主从维表的逻辑,再根据统计与分析逻辑确定维表的更新机制以及维度结构。

阿里巴巴大数据之路-维度设计相关推荐

  1. 基于OneData的数据仓库建设(阿里巴巴大数据之路)

    目录 1- 指导思想 2- 数据调研 2.1- 业务调研 2.2- 需求调研 3- 架构设计 3.1- 数据域的划分 3.2- 构建总线矩阵 4- 指标体系搭建 4.1- 基本概念 4.2- 操作细则 ...

  2. 阿里巴巴大数据之路读书分享

    阿里巴巴大数据之路读书分享 文章目录 阿里巴巴大数据之路读书分享 前言 阿里巴巴大数据系统的体系架构图及介绍 数据采集层 数据采集 数据传输 数据计算层 离线数据开发 实时数据开发 数据服务层 数据应 ...

  3. 阿里巴巴大数据之路——数据模型篇

    阿里巴巴大数据之路--数据模型篇 一.概述 1.什么是数据模型? 数据模型就是数据的组织和存储方法.主要关注的是从业务.数据存取和使用角度合理存储数据. 2.典型数据仓库建模方法论 ER模型 纬度模型 ...

  4. 阿里巴巴大数据之路读书笔记——用户画像的定义

    用户画像 在阿里巴巴旗下的淘宝网.虾米音乐上都不乏个性化推荐场景,淘 宝.天猫平台上的众多商家则需要通过用户调研和产品研发来把握产品 的目标人群和人群偏好,从而对用户投其所好.对用户有深刻的理解是 网 ...

  5. 《阿里巴巴大数据之路》记录--数据模型篇

    维度设计 维度整合 数仓优化经常通过维度的整合和拆分 步骤:确定粒度,选择维度,确定主维度,确定相关维度,确定维度属性 水平整合:数据源来自不同数据集.比如不同的部门的不同数据集,但是都会有商品价格, ...

  6. 阿里巴巴大数据之路-元数据

    元数据 元数据概述 元数据定义 元数据( Metadata )是关于数据的数据 打通了源数据.数据仓库.数据应用,记录了数据从产生到消费的全过程 主要记录数据仓库中模型的定义.各层级间的映射关系.监控 ...

  7. 福利直播 | 12年阿里巴巴大数据之路亲历者详解数据中台

    疫后新生! 春暖花开之时,生存和发展成为众多企业面临的至急难题. 业务停摆已久,对内如何提升效率,对外如何运营获客? 重新按下启动键,谁能更快补上落后的进度,先人一步? 与自己较量,与对手竞速,在看得 ...

  8. 大数据之路读书笔记-10维度设计

    大数据之路读书笔记-10维度设计 文章目录 大数据之路读书笔记-10维度设计 10.1 维度设计基础 10.1.1 维度的基本概念 10.1.2 维度的基本设计方法 10.1.3 维度的层次结构 10 ...

  9. 品《阿里巴巴大数据实践-大数据之路》一书(上)

    7月有人推荐阿里巴巴刚出的这本书<阿里巴巴大数据实践-大数据之路>,到亚马逊一看才是预售状态,拍下直到8月才拿到. 翻看目录一看,欢喜的很,正好出差两天就带在身边,由于在机场滞留超过12个 ...

  10. 《大数据之路:阿里巴巴大数据实践》

    <大数据之路:阿里巴巴大数据实践>语录 目录 一.数据采集 1 ◆日志采集 1 ▼浏览器的页面日志采集 1 ▼无线客户端的日志采集 2 (1) 页面事件 3 (2) 控件点击事件 3 (3 ...

最新文章

  1. centos6.5下载卸载mysql,centos 6.5卸载Mysql
  2. Flask----SQLAlchemy
  3. PHP基本连接数据库
  4. Redis操作Set的相关API
  5. 参数名称 java_java – 具有重要名称的WSDL中的参数名称
  6. 技术生态两手抓,打造面向未来的企业级领先数据库
  7. androidstudio自带git用法_Android Studio使用Git版本控制github
  8. 反编译DLL。并且修改DLL内容
  9. 使用win10远程控制ubuntu16.04
  10. 资管新规 2018年4月27日
  11. JavaWeb项目启动时,自动执行指定方法
  12. 解决win10新装系统无法登录微软账户及microsoft store
  13. windows11搜索按钮回退
  14. Module parse failed: Unexpected token(双问号无法识别)
  15. 【matlab】:matlab的linspace函数解析
  16. 三星礼包 android,SAMSUNG 三星 Galaxy S8 智能手机 移动合约版(伪开箱)
  17. 社区计算机义务维修策划书,义务维修电脑策划书.doc
  18. antd vue表单验证_ant design vue框架中自定义表单或单个表单框验证
  19. 数通学习笔记1 - 数据通信网络基础
  20. linux服务器jdk版本查看_linux如何查看jdk版本

热门文章

  1. 手游脚本_雷电模拟器
  2. Linux面试题大全(带答案的哦)
  3. 关于Adobe flash player 本地播放器
  4. php 字符串加密解密
  5. 《胡雪岩·红顶商人》—— 读后总结
  6. Python Tox 使用笔记
  7. 国内AR智能眼镜发展难点分析
  8. 【线代】齐次方程组的解
  9. Pattern Recognition And Machine Learning读书会前言
  10. 数据在网络中如何传输的