以阿里云的maxcompute的数据仓库架构为例,

从上往下定义,

dwp的数据,来源是dws+dim,最主要是dws。这里不讨论dim的作用。

dws的数据来源于dwd。

dwd的数据来源于ods。

--------

接下来我们定义原子指标和派生指标。

派生指标定义在dws层。并且绑定原子指标。所有的应用数据由派生指标去group by。

原子指标定义在dwd层+虚拟层。原子指标绑定一个dwd的度量值,但是有可能会有计算,所以不完全在dwd,运行的时候可能会进行计算。称为一个虚拟的层。

当然可以把这个虚拟层做出来,专门做一层原子指标层。

这个时候我们的指标管理系统里面应该有以下东西:

  指标名称  指标来源 指标口径
原子指标 可以与度量值一致,也可以不一致 绑定dwd的表名和字段

1.和绑定的dwd的度量值完全对应

2.需要一点计算,录入计算逻辑

派生指标 修饰词+原子指标名称+时间周期 绑定一个原子指标   

①修饰词:作为where过滤的字段

②时间周期:近7天,近一个月等

③聚合操作:平均,求和等

③聚合维度,也可以不录,在模型管理里录

应用指标 同环比+修饰词+派生指标 绑定一个派生指标

①聚合的维度:派生指标所在表的字段

②可能有一些简单的过滤。

③可能会有一些同环比的计算

绝对不允许有字段计算,如加减乘除,if转化等,如果有,说明逻辑没有下沉。

举个例子:

应用指标需要:当月人流量大于2w次并且支付渠道为支付宝的的平均订单金额净增长,维度:每一个城市

拥有的业务过程:订单表。门店人流量表。

  名称   来源 口径
原子指标 订单金额 交易表:支付金额,退款金额 支付金额-退款金额
派生指标

当月人流量大于2w次

并且支付渠道为支付宝的的平均订单金额

订单金额

①修饰词:

where 支付渠道=支付宝

having 月人流量>2w

②时间周期

where 订单时间是一个月

③聚合操作:平均

③维度:城市,品类

(聚合维度比业务指标更宽)

应用指标

当月人流量大于2w次

并且支付渠道为支付宝的的平均订单金额净增长

当月人流量大于2w次

并且支付渠道为支付宝的的平均订单金额

①聚合维度:城市

②环比计算,当月减上月

以上将一个应用指标的计算逻辑沉淀到不同的层次中的指标管理方式,实现了从度量值到最后应用指标的统一,再加上术语管理系统,

可以解决指标同名不同义,同义不同名的口径问题。称之为one data,即一个应用指标有且只有唯一的计算逻辑。

----------------------------------------------------------------------------------------

《模型的作用》

dws的表可以称之为派生指标的模型。

一个派生指标可以有不同的维度。比如近7月,近一个月,城市品类的,城市商圈的,所以 派生指标:模型 = 1:n

可以在录入不同维度的派生指标时,

①当做是不同的派生指标,将维度当做口径记录下来

②当做是同一个派生指标,建设不同维度的模型(表),绑定这个派生指标。如果这么做,应用指标绑定的将不是派生指标,而是dws模型里的字段。

----------------------------------------------------------------------------------------

《是否可以将度量值认为是原子指标》

原子指标代表的是指标的最底层,是服务于指标系统的。度量值代表的是业务发生的过程中产生的数据,是记录业务客观现象的。

虽然两者的字段有很多重合的地方,最好将原子指标重新定义,防止指标管理体系和数仓公共表建设过于耦合而增大统一指标口径的难度。

----------------------------------------------------------------------------------------

《派生指标和应用指标的区别》

应用指标的来源是派生指标,不一定要计算同环比,很多时候名称是一模一样的。

他们的区别在于维度。

dws为了满足更多的应用指标的计算,维度会更多 更细。

打个比方,维度为城市 品类 商圈 门店等级 的订单金额,可以上卷 城市维度,品类维度,商圈维度,城市+品类维度,等多达15个组合的应用指标。

这样BI计算应用指标的时候,就只要根据自己关心的维度做group by即可,非常简单方便。

简单设计一个onedata指标管理体系的更多相关文章

  1. 学生与部门管理app-产品功能与界面的简单设计

    学生与部门管理app-产品功能与界面的简单设计 1. 结对成员学号 我:********* 大佬:*******10 2. 需求分析(NABCD模型) 2.1 N-需求 各个部门在开学初占据学校青春广 ...

  2. Tomcat详解系列(1) - 如何设计一个简单的web容器

    Tomcat - 如何设计一个简单的web容器 在学习Tomcat前,很多人先入为主的对它的认知是巨复杂的:所以第一步,在学习它之前,要打破这种观念,我们通过学习如何设计一个最基本的web容器来看它需 ...

  3. 设计一个简单的,低耗的能够区分红酒和白酒的感知器(sensor)

    学习using weka in your javacode 主要学习两个部分的代码:1.过滤数据集 2 使用J48决策树进行分类.下面的例子没有对数据集进行分割,完全使用训练集作为测试集,所以不符合数 ...

  4. 180626-Spring之借助Redis设计一个简单访问计数器

    文章链接:https://liuyueyi.github.io/hexblog/2018/06/26/180626-Spring之借助Redis设计一个简单访问计数器/ Spring之借助Redis设 ...

  5. 设计一个简单的devops系统

    前言 公司设计的RDMS挺好用的,我也照猫画虎简单的设计一个DevOps系统,与大家分享,不足之处欢迎拍砖,以免误人子弟 前置条件 gitlab gitlab-runner k8s 1. gitlab ...

  6. 【python免费代码】设计一个简单的学生信息管理系统

    文章目录 前言 一.理解 二.部分截图展示 三.代码 四.总结 前言 设计一个简单的学生信息管理系统,实现以下功能(bug) : 录入学生信息,信息以文件方式存储 以学生学号或者学生姓名为条件查询该学 ...

  7. 如何设计一个简单的C++ ORM

    2016/11/15 "没有好的接口,用C++读写数据库和写图形界面一样痛苦" 阅读这篇文章前,你最好知道什么是 Object Relation Mapping (ORM) 阅读这 ...

  8. ERP设计之系统基础管理(BS)-日志模块设计(转载)

    原文地址:8.ERP设计之系统基础管理(BS)-日志模块设计作者:ShareERP 日志模块基本要素包括: 用户会话.登录.注销.模块加载/卸载.数据操作(增/删/改/审/弃/关等等).数据恢复.日志 ...

  9. 如何一步一步用DDD设计一个电商网站(九)—— 小心陷入值对象持久化的坑

    阅读目录 前言 场景1的思考 场景2的思考 避坑方式 实践 结语 一.前言 在上一篇中(如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成),有一行注释的代码: public interfa ...

随机推荐

  1. 一文带你了解.Net互斥锁

    本文主要讲解.Net基于Threading.Mutex实现互斥锁 基础互斥锁实现 基础概念:和自旋锁一样,操作系统提供的互斥锁内部有一个数值表示锁是否已经被获取,不同的是当获取锁失败的时候,它不会反复 ...

  2. 盘点用jQuery框架实现“for循环”的四种方式!

    摘要:分享在jQuery高级开发中对元素标签体的遍历常用的几种方法. 本文分享自华为云社区<盘点用jQuery框架实现"for循环"的四种方式!>,原文作者:灰小猿 . ...

  3. ORA-00937: not a single-group group function

    有时候查询会遇到如下错误   SCOTT@PROD> select deptno,sum(sal) from emp; select deptno,sum(sal) from emp       ...

  4. uniapp 打包IOS 更新AppStore版本

    Hello 你好,我是大粽子. 最近随着新版本UI的发布APP也随之更新,随之而来的也就是IOS程序提审步骤,这次我详细的截图了每一个步骤,如果你正好也需要那么跟着我的节奏一步步来肯定是没问题的. 提 ...

  5. C#获取字符串字符的位数(区分中文和英文长度)

    请看以下代码 1 private static int GetStrLength(string str) 2 { 3 if (string.IsNullOrEmpty(str)) return 0; ...

  6. 95、配置ntp服务器

    95.1.ntp简介: ntp服务使用的是udp的123端口,如果开启了防火墙要记得放开这个端口: NTP(Network Time Protocol,网络时间协议)是用来使网络中的各个计算机时间同步 ...

  7. jquery 选择器 模糊匹配

    根据name值匹配 1.查询前缀为aa的数据 $("div[name^='aa']"); 2.查询后缀为aa的所有div的jquery对象 $("div[name$='a ...

  8. JDK8安装包的下载安装方式以及环境变量的配置

    前面我们介绍了 <Java是什么?>.<OracleJDK是什么?OracleJDK的版本怎么选择?>.<OpenJDK是什么?>以及<OracleJDK 与 ...

  9. Java高质量面试总结

    面试 一般都是由浅到深去问,思路是: 先考察基础是否过关,因为基础知识决定了一个技术人员发展的上限 再通过深度考察是否有技术热情和深度以及技术的广度 同时可能会提出一些质疑和挑战来考察候选人能否与有不 ...

  10. Spring源码编译一次性通过&遇到的坑解决方法

    前言 spring源码本地编译,按网上的博客参考资料的操作步骤,总是会出现各种莫名其妙的错误.根据错误信息找解决方案,但在自己的环境下又总是编译不过去.结合参加培训学习Jack老师提供的方法,自己多种 ...