精华内容
下载资源
问答
  • 我们做数据时刻都要跟“饼柱点线表”打交道,看上去,饼和柱只是视觉上的感受不同,实际上,数据可视相当于“用数据写作”,让人除了看到数字本身,还能从表达方式和元素的选择上看到更多信息。 所以,如何选择...

    大数据

    产品经理和运营经理在日常汇报邮件中经常遇到需要一个问题,表达一组数据,到底应该用饼图,还是柱图?

    我们做数据时刻都要跟“饼柱点线表”打交道,看上去,饼和柱只是视觉上的感受不同,实际上,数据可视化相当于“用数据写作”,让人除了看到数字本身,还能从表达方式和元素的选择上看到更多信息。

    所以,如何选择数据图表元素,是有说道的。

    柱形图

    柱状图通常描述的是分类数据,回答的是每一个分类中“有多少”这个问题。 需要注意的是,当柱状图显示的分类很多时会导致分类名层叠等显示问题。

    大数据

    1. 适合的数据:一个分类数据字段、一个连续数据字段。
    2. 功能:对比分类数据的数值大小。
    3. 数据与图形的映射:分类数据字段映射到横轴的位置,连续数据字段映射到矩形的高度。
    4. 分类数据也可以设置颜色增强分类的区分度。

    散点图

    散点图也叫 X-Y 图,它将所有的数据以点的形式展现在直角坐标系上,以显示变量之间的相互影响程度,点的位置由变量的数值决定。

    大数据

    1. 适合的数据:两个连续数据字段。
    2. 功能:观察数据的分布情况。
    3. 数据与图形的映射:两个连续字段分别映射到横轴和纵轴。
    4. 可根据实际情况对点的形状进行分类字段的映射。
    5. 根据点的颜色进行分类连续字段的映射。

    漏斗图

    漏斗图适用于业务流程比较规范、周期长、环节多的单流程单向分析,通过漏斗各环节业务数据的比较,能够直观地发现和说明问题所在,为决策者提供一定的参考。

    大数据

    1. 适合的数据:一个分类数据字段、一个连续数据字段。
    2. 功能:对比分类数据的数值大小。
    3. 数据与图形的映射:分类数据字段映射到颜色,连续数据字段映射到梯形的面积 。

    饼图

    饼图广泛应用在各个领域,用于表示不同分类的占比情况,通过扇形面积大小来对比各种分类。

    大数据

    1. 适合的数据:一个分类数据字段、一个连续数据字段。
    2. 功能:对比分类数据的数值大小。
    3. 数据与图形的映射:分类数据字段映射到扇形的颜色,连续数据字段映射到扇形的面积。

    仪表盘

    仪表盘(Gauge)是一种拟物化的图表,刻度表示度量,指针表示维度,指针角度表示数值。以直观地表现出某个指标的进度或实际情况。

    大数据

    1. 适合的数据:一个分类字段,一个连续字段。
    2. 功能:对比分类字段对应的数值大小。
    3. 数据与图形的映射:指针映射到分类字段,指针的角度映射连续字段。

    面积图

    面积图又叫区域图。 它是在折线图的基础之上形成的, 它将折线图中折线与自变量坐标轴之间的区域使用颜色或者纹理填充,颜色的填充可以更好的突出趋势信息,需要注意的是颜色要带有一定的透明度,透明度可以很好地帮助使用者观察不同序列之间的重叠关系,没有透明度的面积会导致不同序列之间相互遮盖,减少可以被观察到的信息。

    大数据

    1. 适合的数据:两个连续字段数据。
    2. 功能:观察数据变化趋势。
    3. 数据与图形的映射:两个连续字段分别映射到横轴和纵轴。
    4. 适合的数据条数:大于两条。

     

    End.

    转载请注明来自36大数据(36dsj.com):36大数据 » 产品经理想做好数据可视化表达,到底该怎么选图表?

    展开全文
  • 案例上手 Python 数据可视

    万次阅读 多人点赞 2019-02-27 23:30:05
    课程亮点 ...数据可视数据分析和机器学习的重要环节,比如数据清洗、特征工程、机器学习、数据分析(特别是报告)、评估等环节都会用到“数据可视”技术。 数据可视同时还广泛存在于各...

    课程亮点

    • 6 个常用的数据可视化工具使用方法
    • 20 个案例贯穿各个工具的学习过程
    • 基于 GUI / HTML / Web 网站多种绘图风格
    • 中、美、日三国不同思想的制图工具
    • 从静态到交互,满足不同需要的图示

    课程背景

    数据可视化是数据分析和机器学习的重要环节,比如数据清洗、特征工程、机器学习、数据分析(特别是报告)、评估等环节都会用到“数据可视化”技术。

    数据可视化同时还广泛存在于各种商业、政务、教育等领域的业务表述之中。因为“图”才是喜闻乐见、通俗易懂的,也是最直观的。

    不仅如此,数据可视化还是独立的业务,在现代社会中有各种引人注目的操作,比如将抽象的东西“可视化”、“直观化”等。

    本课程主要向读者介绍了数据可视化中常用工具的使用方法,并且通过多个实战项目案例,让读者更深入地理解可视化的各种方法和技能。

    作者介绍

    齐伟,苏州研途教育科技有限公司 CTO,在 Web 开发、数据分析、机器学习领域有比较丰富的从业经验,并在大学开设过《机器学习实践》课程。曾出版书籍:《跟老齐学Python:轻松入门》《跟老齐学Python:Django实战》《跟老齐学Python:数据分析》和《Python大学实用教程》(大学教材)。

    课程大纲

    enter image description here

    课程内容

    开篇词:为什么学习可视化,应该怎么学

    每一本书或每一个课程,都会有前言或开篇词,但是,很多学习者不喜欢阅读前言,这就大错特错了,因为在前言中往往会包含一些作者想要表达的核心观点。

    我的日常工作就是写程序,业余时间也写了几本书,也有幸偶尔会与周边几所大学的一些学生分享某些技术。在与我交流的一些程序员、读者和学生中,会提出很多关于如何学习某项技能的问题——这里指的是软件开发或者大数据、机器学习方面,不包括诸如人际关系等技能。在这里,我把其中的重要问题和回答,整理出来,供读者参考。

    跟谁学

    这里的“谁”,不仅包括“人”,还包括“物”。

    先说“物”。

    早先学习的媒介比较简单,就是图书,要学习什么知识,没有其他选择,就是买本书。而现如今,选择就多了,除了印刷版的图书之外,还有电子版、音频和视频,甚至视频还分为微课、慕课和课堂实录等,可谓是五花八门。那么,应该选择什么媒介来学习呢?

    很显然,上述问题有一个大前提,那就是“自学”,即自己控制学习过程的学习。如果选择这种学习方式,那就要检讨自我:“是否具有自我控制能力?”。判断标准也比较简单,那就是回头看看在自己的求学过程中,是否运用过这种能力?如果答案是肯定的,那么面对这次自学,就会有信心、有方法了;如果是否定的,并不意味着这次不能自学,而是要为自己的这个“第一次”好好谋划一番了。

    检讨完自己,确立能够自学,就继续下面的操作;否则,请跳过,直接找一个老师,别吝惜多花钱,从长远来看,最好的投资是跟着老师去学。自学,并非适合任何人。

    再回到刚才的问题,选择哪一种学习媒介?

    我的回答是:要了解自己,根据自己的情况而定。

    比如,自己比较擅长阅读,那么就可以选择借助书(包括印刷版和电子版)来学习;如果看书时间稍长,就犯困,建议还是选择视频媒介稍好一些。但是,即便如此,我也建议要有一本相关的书,因为它能够让我们随意翻阅,可以随时解决某些棘手问题——或许搜索引擎更适合?非也!对于一个初学者,搜索引擎给出的东西太庞杂了,难以找到答案。

    “物”选好之后,就要选“人”了。

    不论选择书还是线上或线下的课程,都有一些大师或名师,俗话说“名师出高徒”——更符合我们内心的应该是“大师出高徒”。因此,要找一个超级牛的人,比如在大厂工作过的顶级开发者、名校的名教授等,只要看了他们的书、听了他们的课,就能达到登峰造极之高度,再不济至少也要快速掌握。

    这是很多人的想法,也能理解,谁不希望以最小的投入来获得最大的产出?最好是“不劳而获”。

    只是残酷的现实不断地告诉我们,“大师”和“高徒”之间,不是正相关的。请看下面的思想实验

    思想实验是指:使用想像力去进行的实验,所做的都是在现实中无法做到(或现实未做到)的实验。例如,爱因斯坦有相对运动的著名思想实验。思想实验需求的是想像力,而不是感官。

    假设某名校,有一个宇宙级的大师教授人工智能课,每年听课的学生有 60 人,该大师在该校授课 10 年,累计有 600 名学生。如果“大师”与“高徒”正相关,那么新的宇宙级大师应该至少有几百名。

    但,上述推论与事实不符合。

    “名师(大师)出高徒”,只是听起来很好,符合个人的愿望罢了,但不是客观真理。

    什么原因?

    因为他们不是专门针对你的。

    所以,选“人”的标准不是看其头衔,而是看其提供的学习内容是否适合自己。特别是“小白”,更要以通俗易懂的学习资料入手,跟着能“深入浅出”地讲述的“好老师”去学。

    学什么

    这个问题其实很难回答。因为就编程而言,可以学习的东西就很多了,现在又有大数据、机器学习、人工智能等领域。

    至于学什么,拷问的应该是自己,而不是问别人。检视自己擅长什么、喜欢什么,未来有什么规划,根据这个来确定学什么。

    有的人也列出了一些非常简明扼要的判断标准,比如:

    • 什么方向工资高,就学什么
    • 现在媒体上宣传什么,就学什么
    • 大师说学什么,就学什么
    • 招聘网站上什么岗位多,就学什么

    是否可以据此确定学习内容,此处不置可否。还是做一个思想实验。

    假如时光倒退 20 年。在 20 年前,用上面的标准看一看,应该学什么?什么也不需要学,专门买房子(得有好爹)就可以了!

    选择学什么的确很困难。高考报志愿的时候,众多家长都纠结于孩子要学什么专业的问题。

    除了上帝,谁都不晓得未来什么样,与其纠结某个具体的专业,不如学“万人敌”。

    籍曰:“书足以记名姓而已,剑一人敌,不足学,学万人敌。”

    ——《史记·项羽本纪》

    每个领域,都会有一些沉淀下来的基础知识和技能,这是要学的。此外,更重要的是“学习能力”,学习内容是增长学习能力的载体,学习能力就是“万人敌”。

    因此,本课程从始至终,会贯彻一个宗旨:提升学习能力,不是唠唠叨叨地诉说知识点。

    怎么学

    关于学习方法问题,很多书中都有所论述,此处不详述,因为方法都差不多,关键是能不能执行的问题。

    学习是一个苦差事,我们从本性上是排斥的。

    因此,古人云“书山有路勤为径,学海无涯苦作舟”。

    有了“肯吃苦”的思想准备之后,如下具体操作方案,供读者参考:

    • 认真阅读书中的每句话,并且反问自己是否理解了,如果没有理解立刻 Google 相关的信息,这就是把书读厚的理念。
    • 要理解书中的程序示例,逐行理解,甚至于逐行注释,并且,一定要自己亲自敲代码,千万不要复制代码。
    • 在上面的基础上,独立地把示例程序写出来,并进行调试。如果遇到了问题,比如报错了,此时应该“闻过则喜”,因为这是进步的阶梯,务必对照书上的讲解,反思自己写的代码。
    • 要阅读有关技术文档,不论它是中文的还是英文的——这点很重要,千万不要因为语言问题而放弃阅读。
    • 用 Google 搜索(这里不是在做广告,我也不是‘美分’什么的,只是介绍个人的经验),并且不限于使用中文作为搜索关键词。

    如果有条件,还建议多参加一些有关技术的专题活动,比如社区活动等,不仅能扩展自己的视野,还能结交很多同道中人。

    为什么学“数据可视化”

    说的有点多了,现在才回到正题。

    如果有志于在大数据、机器学习、人工智能领域从业的话,“数据可视化”是必不可少的,因此说不得不学。

    接下来就会有另外一个问题:为什么要选择本达人课作为学习资料?

    那就要了解本达人课为读者做了什么。

    • 深入浅出阐述有关知识点和技能,同时“授人以渔”,这是核心目标。

    • 介绍目前常用的几种工具,当然不可能穷尽所有工具,挑选了部分具有代表性的。

      • Matplotlib
      • Seaborn
      • Plotnine
      • Plotly
      • Pyecharts
      • Bokeh
    • 在讲解的过程中,配以丰富的示例。

    其他说明

    本达人课的所有程序都是基于 Python 语言(Python 3.x 版)来写的,需要做好如下准备。

    • 准备一台适合开发用的计算机,不论是台式机还是笔记本均可。但是,它是否适合开发?只要不是太古老的机器,硬件方面都差不多,关键是操作系统。本达人课中的所有演示都不是基于 Windows 操作系统(也算是我的偏执吧),我不习惯把 Windows 操作系统列位于适合开发的环境,倒是在日常办公方面比较适合,在开发方面我习惯使用 Linux 或者 Mac OS 操作系统。读者可根据自己的喜好选择。本达人课的所有代码,是跨平台的,跟用什么操作系统无关。
    • 已经能够使用 Python 语言编程。
    • 掌握 Numpy 和 Pandas 的基本知识。

    这是学习本达人课内容的前置条件。

    这些都准备好之后,就开始学习。

    课程大纲

    本课程分为七大部分,共计 28 篇(含开篇词和结尾)。

    • 准备部分(磨刀不误砍柴,第 0-1 ~ 0-3 课),介绍数据科学工程师的工作流程以及数据可视化的必要性,并且指导学习者安装有关工具。通过这部分的学习,能够对数据科学以及从业者的工作有个总体认识,晓得数据可视化的地位,并在本地计算机安装有关工具。

    • 第一部分(开山鼻祖:Matplotlib,第 1-1 ~ 1-6 课),介绍 Python 语言生态中虽然古老但依然被使用的数据可视化工具 Matplotlib。通过这部分的学习,能够掌握 Matplotlib 的应用思想和方法,并能够绘制常用的统计图。

    • 第二部分(后起之秀:Seaborn,第 2-1 ~ 2-5 课),介绍基于 Matplotlib 发起而来的一种常用的可视化工具 Seaborn。通过这部分的学习,能够掌握 Seaborn 的特点,并熟悉常用统计图的绘制方法。

    • 第三部分(另立门派:Plotnine,第 3-1 ~ 3-3 课),Plotnine 是根据图层概念制图的工具,不同于前面两部分的工具。通过这部分的学习,能够理解图层的概念以及在制图中的应用,掌握 Plotnine 灵活制作个性化图示的方法。

    • 第四部分(特立独行:Plotly,第 4-1 ~ 4-4 课),Plotly 是一款能够“两栖作战”的工具,既能得到静态图片,也能生成动态交互的图示,即从这部分开始,制图工具进入“交互”阶段。通过这部分的学习,能够掌握常用统计图(具有交互功能)的绘制,并可以生成 HTML 文件。

    • 第五部分(中华武功:Pyecharts,第 5-1 ~ 5-2 课),Pyecharts 是非常好的国产工具——中文文档,非常可亲近。Pyecharts 提供的工具和色彩渲染上,都比前述工具有所突破。通过这部分的学习,能够掌握 Pyecharts 的使用方法,特别是利用它实现地理信息可视化和基于 Web 项目发布可视化图示。

    • 第六部分(岛国薄纱:Bokeh,第 6-1 ~ 6-3 课),这是一款来自岛国日本的可视化工具,除了完成通常的操作之外,在交互功能上,比 Plotly 和 Pyecharts 更有特色。通过这部分的学习,能够掌握 Bokeh 的使用方法,特别是 Bokeh 自带服务,能发布基于网络的图示。

    课程寄语

    最后送上励志名言:

    努力面前,忘记背后,向着标杆直跑。

    当遇到貌似无法克服的困难时,当怀疑自己是否能够学会时,当受到其他诱惑想放弃时,请来读一读这句话。

    开始!

    第0-1课:数据科学工作流程

    每门学科,都会有一些前置的信息,这里还要再继续唠叨唠叨,最好别引起你的反感呦。

    愚见,下面的信息,是需要首先明晰的。

    • 数据分析、人工智能等与数据相关的工作,其工作流程是什么?
    • “数据可视化”,在数据科学中占有什么位置?
    • 为了学会数据可视化的各种技能,都需要哪些前置知识和能力?

    拙作《跟老齐学 Python:数据分析》一书中,列出了数据科学的发展简史,从中能体会到人类对数据的研究和应用。随着技术的发展,本质上是社会生产力的发展,数据驱动决策的观念越来越深入人心(此处推荐观看电影《点球成金》)。

    都在谈论“数据科学”,那么什么是数据科学?需要有一个明确的说明。

    对于概念性的东西,推荐参考“维基百科”或者某些经典著作。

    下面的定义来自“维基百科”中的“数据科学”词条。

    数据科学(英语:Data Science),又称资料科学,是一门利用数据学习知识的学科,其目标是通过从数据中提取出有价值的部分来生产数据产品。它结合了诸多领域中的理论和技术,包括应用数学、统计、模式识别、机器学习、数据可视化、数据仓库以及高性能计算。数据科学通过运用各种相关的数据来帮助非专业人士理解问题。

    阅读了词条的解释,算是对数据科学有了初步的感性认识。

    根据经验,对于专有名词的英文词条解释与其对应的汉语说明,还是有差异的。因此,特别建议再阅读“数据科学”的英文词条:Data science

    Data science is an interdisciplinary field that uses scientific methods, processes, algorithms and systems to extract knowledge and insights from data in various forms, both structured and unstructured, similar to data mining.

    Data science is a "concept to unify statistics, data analysis, machine learning and their related methods" in order to "understand and analyze actual phenomena" with data. It employs techniques and theories drawn from many fields within the context of mathematics, statistics, information science, and computer science.

    显然,中文“数据科学”和英文的“Data Science”两个词条的内容,从信息量上看,还是有差别的。

    根据 Data Science 中的说明,数据科学所处理的数据包括“Structured”和“Unstructured”(即“结构化的”和“非结构化的”)。数据科学中有一个重要环节,名曰“特征工程”,就是要将一些非结构化的数据转变成通常算法能够处理的结构化的数据。当然,这不是本课程要讲述的内容,本课程中使用的数据都是“结构化的”数据。

    通常,科学是基础理论部分,它不直接产生价值,它的价值会通过工程体现出来。因此,对应着“数据科学”的应用,就是“数据工程”。那么“数据工程”是怎样的实施流程呢?

    下图是综合了一些书籍所述和个人工作经验而来的。

    Data science workflow

    图 数据工程流程

    图的优势是能够把很多信息集中显示在眼前,给人以直观视觉化的体验,这也是“可视化”的优势。但是,图示也有明显的劣势,那就是表述上不严谨,容易产生歧义。比如面对一幅山水画,可能会有各种不同的理解;但是面对 F = ma 这个牛顿第二定律的表达式时,就只能有一种理解,不能仁者见仁智者见智。

    因此,通常图示都要配说明。

    理解商业问题

    这是“数据工程”的开始,从业者——数据工程师,必须对相应的业务有所了解,这也是数据工程师特有的市场价值之一(高工资是有道理的)。

    理解商业问题,并非是成为业务高手,而是要能够从业务中梳理出与数据工程项目有关的环节,特别是将业务中某些问题转化为数据问题。

    比如,某公司打算开发一套能够评价学生学习情况的软件系统,其中应用了所谓“过程性评价”的学习发展评价方式,要实现这种评价方式,就需要用到数据分析、机器学习的有关技能。

    面对这个项目,首先问如下几个问题:

    • 哪些类型的数据能够支持“过程性评价”?
    • 通过什么渠道可以获取这些数据?
    • 所获得的数据可靠程度如何?

    以上问题获得了明确答复之后,再考虑后续的工作,否则项目就成为了空中楼阁。

    通过理解商业问题,把通常的业务人员习惯用的描述性语言,转变为具体的科学性语言,才能对某些环节作出“数据性”回复,实现“数据驱动决策”目标。

    还是用前面的例子来说明,通常的教育工作者或者业务人员,会对“过程性评价”的结果这样描述:过程性评价能够对学生的成长发展提供指导,而不是一考定终身。

    这种说法貌似容易理解,但里面充满了歧义,列出几项(包含但不限于):

    • 学生成长发展的指标是什么?是考试成绩?心理发展?身体状况?
      • 如果是考试成绩,是周考试成绩?月考试成绩?学期末考试成绩?
      • 如果是心理发展,用什么量表测量?还是凭借主观观察?
      • 如果是身体状况,又要测量哪些项目?
    • 衡量学生发展的周期是多长?学年?学期?月?周?日?小时?每次作业?

    显然,要落实所谓的“素质教育”,需要解决的问题真的太多、太复杂,绝非几句口号和几篇文章就能解决的。

    若要从数据层面解决上述问题,就必须把有关数据的问题提炼出来,用准确的语言表述,然后考查业务是否能够支持这些问题。

    数据收集

    数据收集和前述理解商业问题,两者之间是一个互动关系。研究收集数据的方法,也是对商业问题的再度理解。

    此外,数据收集还包含着从某个数据集中获得数据的含义。这里所说的数据集,包括但不限于:

    • 数据库,包括关系型和非关系型
    • 数据接口(API)
    • 保存数据的文件,比如 Excel、CSV 文档等

    以上这些是常用的数据集。如何从这些数据集中读取到数据?需要的技能应该是:

    • 熟练使用 SQL
    • 熟练使用某种编程语言(本达人课使用的是 Python 语言)

    数据清洗和特征工程

    假设已经通过某种合法的方式“不作恶”的途径得到了某些数据,接下来要做的是了解这些数据,主要通过以下两种方式:

    • 对数据进行简单的描述性统计
    • 对数据实行可视化,直观地了解数据概况

    这里就用到了“数据可视化”的技能。

    然后就是“数据清洗”和“特征工程”,这是另外两个重要工作了,由于本课程聚焦在“数据可视化”上,这里就不详述了。但是,即便在这两个工作过程中,也会用到“数据可视化”的操作技能。

    两个分支

    有了“训练好”的数据之后,根据商业问题的目标,可以从事两个方面的具体工作。

    (1)数据分析

    应用各种数据分析的方法,最终得到一份分析报告。

    分析结果,除了用数字表达之外,可视化是不可避免的(又见“数据可视化”)。

    (2)机器学习

    机器学习是另外一个专门领域,目前正火热中。

    通过机器学习算法,实现对数据的分类、预测和聚类等操作,在这个过程中,也难免要用“数据可视化”表达某种结论。

    评估

    不论是机器学习,还是数据分析,其结果都要进行评估。

    对于机器学习而言,有专门的模型评估方式。即便如此,用可视化的方式把结果表达出来,也是一种重要的手段。

    根据评估结果,确定是否采用机器学习所获得的模型,亦或数据分析的报告是否被采纳。

    以上是数据工程项目的基本流程,从中可知,“数据可视化”并不是流程中的一个独立环节,它是几个环节中必不可少的实现手段

    在实际中,做可视化工作的,除了数据科学从业者,还有美工,甚至还有其他人员,显然实现可视化的途径是多样的。那么,我们将学习什么类型的可视化呢?

    请看下一课的内容。

    总结

    本课介绍了“数据科学”的基本概念,并简述了“数据工程”项目的基本流程,从此工作流程可知,本课程的主题 “数据可视化”是数据分析和机器学习等方面的重要手段,在这些环节中都占据了一定的位置。

    第0-2课:数据可视化的类别

    走在大街上,满眼都是广告——说明市场经济发达,这是好事情。再观察一下广告,多是以各种样式的图形呈现,而不是简简单单地把数字呈现出来——即使是数字,也想办法把数字搞得像图一样。这样做的目的是要吸引人的注意,并且能够让人一眼就能看到想要看的。

    别以为这是广告商的策略,其实,他们只是顺应了大脑的特点(具体请参考有关心理学和脑科学的研究成果)。

    因为大脑的这种喜好,所以才非常有必要“数据可视化”,即用某种适合的图形来表示某些数据。

    数据可视化的类别

    通常有两种可视化数据的方式——这是我提出的分类,如有雷同,纯属巧合:

    • 艺术性可视化
    • 数学性可视化

    以 2018 年的中美“贸易战”为例,美国的媒体为了向美国老百姓说明中国经济发展的情况,特别是对美国经济的威胁,一定要使用到中国经济和美国经济相关数字,那么这些数字怎么展示?

    de12efa0-331a-11e9-bff5-05638cbe7e78

    图 1 中美 GDP 比较(图片来源

    这是一张预测中美 GPD 走势的图示,看此图,我想,美国人也没有什么太被刺激的感觉,因为看看两条线,未来即使有高低之别,但差别也没有那么吓人,况且,预测还可能不准确呢。

    这就是数学性可视化,虽然比较理智的反映了数据。但是,给人的印象不是很深刻,或者没有让人感到受刺激。

    再对比图 2。

    32a92430-331b-11e9-ae61-ab46ecd2ee1c

    图 2 艺术性地表示 GDP(图片来源

    虽然这张图中也包含了数字,但是,它同时配置了表示数字的图示,并且都很形象,人的视觉无形中就被图示所吸引了。把数字本来的抽象意义,用直观的方式表达出来,更刺激人的大脑。

    这就是将原本的数据通过“艺术性可视化”的方式进行了表达。目的无非是要从视觉的维度让人感受到一种震撼。

    “艺术性可视化”,它通常不会科学、准确地反映数据的含义,而是为了某个目的追求感官刺激,比如图 3。

    75efbc90-331b-11e9-ae61-ab46ecd2ee1c

    图 3 预测 GDP 变化 (图片来源

    在本达人课中所要介绍的“数据可视化”,肯定不是那种蛊惑人心的可视化,而是本着科学精神的“数学性可视化”,虽然它可能不如“艺术性的可视化”好看,但是,更趋真实地反映了对象的本质。

    常见图像和用途

    “数学性可视化”,就是要将数据用图像的方式表达。从数学角度来看,不同的图像有不同的用途或目的,下面依次简要说明(此处姑且讨论二维图像)。

    散点图

    还记得高中物理课学过的折射定律吗?也称为斯涅尔定律,假设不知道,我们就探索一下。用实验的方式分别测量光线入射某透明介质的入射角和折射角大小,测量多次,于是就得到了入射角和折射角的数据集,分别用 alpha 和 belta 表示。

    有了这两组数据,怎么研究入射角和折射角之间的关系呢?它们之间符合什么函数关系?

    一种常用的方法是:

    • 建立一个坐标系,横坐标表示入射角,纵坐标表示折射角;
    • 将入射角及其对应的折射角,作为坐标系中的一个坐标点,在此坐标系中把点标记出来。

    这样就在坐标系中“散落”了很多点,如图 4 所示:

    e7fdbc10-331b-11e9-bff5-05638cbe7e78

    图 4 入射角和折射角散点图

    接下来的任务就是观察这些点在坐标系中的分布,猜测它们应该符合什么函数关系,比如可能符合某个一次函数关系等(看起来像符合正比例函数的关系,人类曾经很长时间都这么认为,直到伟大的物理学家斯涅耳揭示了其中的奥秘为止)。

    通过这个例子,可以总结如下:

    • 绘制散点图,要有对应的两组数据(二维图);
    • 两组数据所对应的两个变量是连续变量;
    • 散点图的用途在于发现变量之间的关系。

    在实际业务中,散点图的样式可能具有多种,而且也不一定都是用来寻找某种函数关系。比如在地图上用色彩深浅画出各个城市的 PM2.5 指数,这也是一种散点图,通过这种散点图就能够看到污染城市的地理分布规律。

    柱形图

    柱形图(也称为:柱状图),适用于二维数据集,但是有一个维度的数据需要具有比较意义。比如下面的数据:

    省份GDP(10 亿元)
    广东省8,987.92
    江苏省8,590.09
    山东省7,267.82
    浙江省5,176.80
    河南省4,498.82
    四川省3,698.02
    湖北省3,652.30
    河北省3,596.40
    湖南省3,459.06
    福建省3,229.83
    上海市3,013.39
    北京市2,800.04

    对于这份数据,就比较适合用柱形图进行可视化。

    58b0f110-331d-11e9-ae61-ab46ecd2ee1c

    图 5 部分省 GDP 柱形图

    图中所示的柱子高度,表示数据表中各省的 GDP 值。

    通过柱形图,非常明显地反映了各省 GDP 数据的差异。

    但是注意,柱形图不适合大数据,在横坐标上如果排满了柱子,看着多眼晕呀。

    条形图

    条形图,貌似就是柱状图横过来,对于数值都是大于 0 的数据而言,画出来的条形图可以这样理解。但是,下面这种类型的数据也是比较常见的。

    城市1 月份最低气温(℃)
    哈尔滨﹣31
    北京﹣2.9
    郑州﹣4
    济南﹣5
    南昌3
    长沙2
    广州10
    台北14

    从数据表中可以看出,我国部分城市 1 月份最低气温,有的在 0℃ 以上,有的在 0℃ 以下。对于这类数据,用条形图显示,结果是这样的。

    bbe22920-331d-11e9-b3a9-4f8760d3237f

    图 6 部分城市最低温

    当然,这份数据也可以用前面的“柱形图”实现可视化。

    折线图

    下面这份数据,是 1961 ~ 2017 年我国的 GDP 年度增长率。显然,如果用条形图、柱形图来实现可视化,效果都不是太好,因为数据量有点大了。

    年份中国 GDP 年度增长率
    2017 年6.90%
    2016 年6.70%
    2015 年6.90%
    ......
    1962 年﹣5.58%
    1961 年﹣27.27%

    注:因为数据量比较多,所以显示部分。

    对这份数据实现可视化,比较好的选择是绘制折线图。

    ff641cd0-331d-11e9-b59c-dfe60266e7ff

    图 7 我国理念 GDP 增长

    从图示结果中,可以看出 GDP 的发展变化趋势。

    折线图最典型的应用应该算是在股票方面了,范围大一点可以说是“金融数据分析”方面。

    直方图

    直方图貌似“柱形图”,但两者有很大区别。

    直方图是以各个矩形的面积描述各组的频数,所有矩形的面积之积为各组频数的和。

    例如,使用下面的程序构造了一批随机数。

    import numpy as npmu, sigma = 100, 15x = mu + sigma * np.random.randn(1000)

    想直观地了解这个数据集中数字分布的特征,就可以利用直方图。

    4a06b5e0-331e-11e9-ae61-ab46ecd2ee1c

    图 8 正态分布

    从图中可以看出,虽然是随机生成的,但是数据的分布还是有规律的,这就是统计学中的正态分布。

    饼图

    饼图常用于表达某些量所占比例的情况。例如:

    6d384330-331e-11e9-ae61-ab46ecd2ee1c

    图 9 饼图

    图中显示了不同量占据总量的百分比,通过饼状图就能够对比分类数据的数值大小。当然,如果类别太多,会把“饼”分成太多的小份,不美观,也不易于观察。

    箱形图

    箱形图又称盒须图、盒式图或箱线图。

    图 10 显示了通常的箱形图的形状:

    ccf67490-331e-11e9-bff5-05638cbe7e78

    图 10 箱线图

    通过箱形图,可以观察到如下信息:

    • 数据的统计值为中位数、最大值、最小值等
    • 数据集中是否存在异常值,以及异常值的具体数值
    • 数据是否是对称的
    • 数据的分布是否密集、集中
    • 数据是否有偏向性

    还要提到股票,如果仔细观察,里面也用到了箱形图。

    以上列出的几种图形,是常见的,也是基本的。在这个基础上,还有很多变形,这些变形可能综合了多种含义,比如堆积柱状图,能比较不同量之间的大小,也能部分显示分布情况。此外,还有一些专用图形,例如股票中常用的 K 线图,地理信息中常用的分级统计地图等。

    此外,根据不同的用途,还可以创造性地开发新的图像。

    为了便于检索,把一些图形的名称列在下面,供参考:

    • 柱形图
    • 堆积柱形图
    • 条形图
    • 气泡图
    • 直方图
    • 箱形图
    • 热力图
    • 散点图
    • 雷达图
    • 环形图
    • 饼图
    • 折线图
    • K 线图
    • 仪表盘
    • 词云

    对数据进行可视化的时候,要根据数据特征、绘图目的选择适合的图像。

    总结

    本课将“数据可视化”分为“艺术性可视化”和“数学性可视化”两类,本达人课主要讲述的是“数学性可视化”,即基于统计学基本知识,运用编程技能实现数据可视化。这种方式特别适用于大数据的问题中。

    本课还列出了常用的统计图,生成这些统计图的数学原理及其所表达的含义,请参阅有关统计学的知识。

    第0-3课:做好启动准备

    本达人课不是针对零基础的学习者,需要具备以下知识。

    (1)Python 基础知识,包括但不限于:

    • 掌握 Python 内置的基本对象类型,如数字、字符串、列表、字典、元组等
    • 掌握 Python 的基本语法规则,如引入模块的方法、for 循环语句等
    • 掌握 Python 中函数的编写方法
    • 掌握 Python 中类的基本概念和了解面向对象的思想

    这里推荐《Python 快速入门》达人课来学习。

    (2)NumPy 和 Pandas 的基本知识,包括但不限于:

    • 利用 NumPy 创建数组,以及数组相关的方法(或者 Numpy 的函数)
    • 利用 Pandas 创建 Series 和 DataFrame 对象,以及相应的操作和方法

    以上知识,在拙作《跟老齐学 Python:轻松入门》《跟老齐学 Python:数据分析》图书中均有详细介绍,可供参考。

    有了以上知识作为基础,接下来要做的是安装数据可视化相关的包(模块)。在 Python 中,基本安装方法是使用 pip 安装,但是在数据科学方面,有两个可供使用的环境。

    Anaconda

    官方网站:https://www.anaconda.com/

    874ef6e0-3320-11e9-b3a9-4f8760d3237f

    上图是官方网站界面的截图,其中只凸显了 Anaconda 的作用,它是一个数据科学的平台,而且宣称是最流行的,此言绝非虚妄。之所以如此受欢迎,就是因为 Anaconda 已经融汇了很多常用的工具,比如前面提到的 Numpy、Pandas 等已经集成在里面了。所以,只需要下载这个网站的 Anaconda,然后安装,通常使用的模块就都包括了——一次安装,终生受用。

    流行,就是因为简单。

    但是,它也绝非十全十美,或者说世界上就没有十全十美的东西吧。

    因为 Anaconda 高度集成化,也会让你失去对模块的控制,比如你有强迫症,非要把程序文件安装到某个指定位置,这就难度大了。

    但是,依然推荐。

    pip

    这是我喜欢的,所有在本达人课中的安装演示,都是使用 pip。

    除了上面两个之外,还可以直接下载源码安装,源码通常会在 github.com 这样的代码托管网站上。

    接下来,就要演示安装本达人课所用工具的过程了。

    特别声明

    • 本达人课中的所有操作和程序,是在 MacOS 操作系统中进行的
    • 完全照搬以下安装方法,在你的计算机上不一定成功,届时请多用 Google 找方法

    安装工具之前,先要了解通常的命令:

    • 如果使用 anaconda,安装命令是 conda install modulename
    • 如果使用的 pip,安装命令是 pip install modulename

    Jupyter

    这是一个网页版的编辑器。

    在 Python 中,有一个“交互模式”,如下所示:

    >>> print("Life is short, you need Python.")Life is short, you need Python.

    这种模式非常方便,但是,写过的代码难以保存。因此,它不是一个好的“编辑器”(根本就不是编辑器)。

    于是乎,IPython 就应运而生了(不用着急安装 IPython,在此处它只是一个过程)。后来,在 IPython 基础上,发展出了一个基于浏览器的 Notebook,用于文本文件编辑,它兼顾了交互模式的优点,那就是即时运行,并且能够如同 IDE 一样,对代码实施保存、传播、再运行等操作。这个编辑器就是这里推荐的 Jupyter。

    Jupyter 也是开源免费的。2014年, Fernando Pérez 发明了它,除了支持 Python 之外,它还可以支持 Julia 和 R,并且可以用于编写 Markdown 文件。

    安装

    pip3 install jupyter

    注意,后面的所有安装,我都使用 pip3,表示安装适用于 Python 3 的版本。

    运行

    打开终端,到某一个工作目录,执行以下命令:

    $ jupyter notebook

    通常,会自动打开默认浏览器,并呈现下图所示的界面。

    enter image description here

    在图示中可以看到一些扩展名为 ipynb 的文件,这些都是已经创建的 Jupyter 文件,里面都是一些相关代码,如果点击某个文件,就可以在当前环境中打开。

    再观察上图的右上角,有“新建”下拉菜单,通过它,可以创建一个全新的编辑界面。

    Jupyter 与通常的 GUI 软件差不多,用鼠标点来点去就可以了。当然,它有一些快捷键,如果想了解,可以在网上搜一下。

    Matplotlib

    Matplotlib 是基于 NumPy 的、Python 语言环境中的绘图工具包。它可以用于绘制类似 GUI 软件的图像,并且这些绘图工具的 API 都是基于“面向对象”思想开发的,与 Python 语言的开发思想一致(这也是现代编程语言都秉承的思想)。

    Matplotlib 的发明者 John D. Hunter,继承了 Python 一贯的开源思想。目前 Matplotlib 已经由一个委员会来负责,发明者 John Hunter 于 2012 年 8 月被上帝接走了。

    必须向这位伟大的发明者致以崇高的敬意。

    自从 Matplotlib 1.2 之后,就开始支持 Python 3 了。因此,现在所安装的 Matplotlib 如果没有特别的版本指定,默认都是适合于 Python 3 的了。

    Matplotlib 有一个重要的子模块,也是我们制图经常用的,名为:pyplot,它是一个类似于 Matlab 的接口(如果学习过 Matplab,就可以直接把其中的用法搬过来了)。其实,Matplotlib 也是参考了 Matlab 中的绘图功能而设计的专门用于 Python 中的绘图工具。

    Matplotlib 的官方网站:https://matplotlib.org/

    安装

    标准方法:pip install matplotlib

    理论上讲,如果本地缺少某些依赖程序,执行上面的命令后,会自动地将依赖的程序安装上。

    在实际中,总会遇到意想不到的,因此,如果遇到安装不成功的事情,也不要气馁,慢慢找办法,一定能成功的。

    最基本的条件,计算机要联网,并且网络情况别太差了。

    检测是否安装成功

    安装之后,用下面的方式测试是否安装好。

    在工作目录中运行 Jupyter,新建一个页面,并且命名为“chapter0-3”。

    然后按照下图的方式输入代码:

    enter image description here

    为了方便,后面演示的时候,就把每个代码块写成如下的形式,上图中显示的是一个代码块。书写的这个代码块的方法就是:每写完一行,回车,然后写下一行。请不要复制代码,而是要自己一个一个字母地敲。

    %matplotlib inlineimport numpy as npimport matplotlib.pyplot as pltx = np.linspace(0, 100, 1000)y = np.sin(x)plt.plot(x, y)

    写完这个代码块之后,按组合键“Shift + Enter”,即执行这个代码块中的程序。执行结果如下图所示:

    d8590c90-3322-11e9-bff5-05638cbe7e78

    从图中可以看到,在前述代码块的下面显示了执行结果。得到的函数曲线图,也呈现在了当前的页面中,这是因为代码块中的第一行的设置。如果没有 inline,只写 %matplotlib,你会在另外一个窗口看到画出来的图。

    上述代码的其他部分,先不用理解,后面会详细介绍。

    执行上述代码,如果能够得到跟图中显示一样的,就说明 Matplotlib 安装无误。如果出现错误,请特别认真阅读报错信息,然后根据报错信息到网上搜索有关解决方案。比如常见的一种错误是说缺少 backend,这是因为本地计算机没有安装 GUI 的支持框架(推荐阅读:What is a backend?,可以根据官方文档中的说明,安装一个 backend,比如安装 tk)。

    Seaborn

    Seaborn 是基于 Matplotlib 的一个可视化工具,它提供了一些更高级的接口,让绘图过程更简洁。

    官方网站:https://matplotlib.org/glossary/index.html#term-tk

    有了前面的基础,安装 seaborn 就比较简单了:

    pip3 install seaborn

    安装完毕,如果要检验是否安装成功,直接使用 import seaborn 命令,不报错,说明就没问题了。

    Plotnine

    Plotnie 是在 ggplot2 的基础上发展而来的,这个模块的绘图思想和前面两个有所不同,不过这些现在不需要掌握,只需要安装它就可以了。

    官方网站详见这里

    官方网站给的安装方法是:pip3 install plotnine

    如果安装过程没有那么顺利,可以参考我的经历,因为我按照这个官方网站的方法操作也没有成功。

    以下安装步骤是针对 Python 3.7 的环境。

    • Pandas 要先升级,顺便把 Numpy 也升级吧:
    pip3 install --upgrade pandaspip3 install --upgrade numpy
    • 安装 Cython:
    pip3 install cython
    • 安装最新的 Pyproj。如果这个不安装或者不适用于 Python 3.7,则会报出 gcc 错误:
    pip3 install git+https://github.com/jswhit/pyproj.git#egg=pyproj

    这里是下载源码来安装的,理论上用 pip3 install pyproj 也行,但是因为源程序的服务器在境外,经常性的出现访问超时现象。

    • 如果 geppandas 没有安装,也要安装:
    pip3 install geopandas
    • 最后安装 plotnine:
    pip3 install 'plotnine[all]'

    经历以上过程之后,如果还没有安装好,就只能 Google 了。

    完成了坑爹的过程之后,plotnine 安装完毕。

    Plotly

    Plotly 是一款能够实现基于网页作图的工具软件,其底层是 plotly.js,基于 D3.js、stack.gl 和 SVG,因此能够实现用 JavaScript 在网页上绘制类似于 Matplotlib 的各种统计图形。

    官方网站:https://plot.ly/

    Plotly 原本是收费的软件,但自 2016 年 6 月开始,提供免费的社区版。

    它能够实现在线发布制图结果,为了实现这个目的,还需要到该网站进行注册。

    注册完毕,登录网站,并在界面的右上角用户名的下拉菜单中选择“setting”项目,再从左侧栏选择“API Keys”,设置 Username 和 API KEY,记录下来,以备后用。

    安装方法:pip3 install plotly

    Pyecharts

    Pyecharts 是国产的可视化工具包。

    官方网站:http://pyecharts.org/

    难得有中文文档。

    为了获得更好的效果,先安装如下依赖:

    $ sudo npm install -g phantomjs-prebuilt --upgrade --unsafe-perm

    而后,使用下述方式安装:

    pip3 install pyecharts

    在后续操作中,还要用到其他的模块,比如主题模块,可以参考官方文档进行安装。因为是中文的,而且文档内容非常详细,相信读者一看便知。

    Bokeh

    Bokeh 也是当前使用量日益提升的制图工具,它的核心特点在于能够基于服务器发布各种具有强交互性的图示。

    官方网站:https://bokeh.pydata.org/en/latest/

    安装方法:

    pip3 install bokeh

    经过上面的一系列折腾,应该已经把自己的计算机开发环境配置好了。

    不过,要说明的是,本达人课所介绍的几种可视化工具,仅仅是我选择的,其实还有很多可视化工具没有纳入到本达人课的范畴。我相信,读者学习这几种各具特色的工具之后,可以非常快速地掌握任何一种新的工具。

    总结

    本课主要是为后续的正式学习做好准备,特别是开发环境的配置。在 Python 生态环境中做开发,难免还要安装其他各类包和模块。

    • 通常使用 pip 即可,并且会自动安装有关依赖。
    • 如果出现“访问超时”这类问题时,可能是网络不太好,解决方法有两个:一是换一个速度更快的网络环境;二是找个“梯子”(自备,不要询问我哦)或许就解决问题了。
    • 下载相应模块的代码(通常官方网站或者 github.com 上都有)直接安装(比如执行:python3 install setup.py)。
    • 还有一个重要的解决问题途径,就是使用 Google 找一找其他人是怎么解决的,参考一下。
    结束语:在学习中应用,在应用中学习

    本达人课介绍了各具特点的多种实现数据可视化的工具,读者应该根据自己的需要,有重点地掌握,特别是结合实际的项目需要。

    不论哪一个工具,都有完善的官方文档,那么本达人课充其量是引领入门,要向对该工具有较深入的理解,还需要阅读官方文档。

    学习和应用是两个不同的过程。学习某项技能,必须从一招一式开始,或许感到枯燥,但这是基础;应用则是要根据实际需要灵活地综合运用所有技能了。

    那“独孤九剑”中的“破剑式”虽只一式,但其中于天下各门各派剑法要义兼收并蓄,虽说“无招”,却是以普天下剑法之招数为根基。

    实际项目中的每一行代码背后,都是对基础知识和基本技能的深刻理解,因此,非常有必要掌握。只有这样才能面临项目时随机应变。

    独孤求败如若复生,又或风清扬亲临,能遇到这样的对手,也当欢喜不尽。使这“独孤九剑”,除了精熟剑诀剑术之外,有极大一部分依赖使剑者的灵悟,一到自由挥洒、更无规范的境界,使剑者聪明智慧越高,剑法也就越高,每一场比剑,便如是大诗人灵感到来,作出了一首好诗一般。

    程序亦如此!

    答疑与交流

    为了让订阅课程的读者更快更好地掌握课程的重要知识点,我们为每个课程配备了课程学习答疑群服务,邀请作者定期答疑,尽可能保障大家学习效果,同时帮助大家克服学习拖延问题!

    入群请到第1-1课末尾查看入群二维码,如果群满,请添加 GitChat 小助手伽利略的微信,ID 为 GitChatty6,注明「数据可视化」,并将支付截图发给她,谢谢。

    第1-1课:Matplotlib 初体验
    第1-2课:重新认识坐标系
    第1-3课:如何分区和绘图
    第1-4课:多样化的图像
    第1-5课:绘制柱形图和条形图
    第1-6课:绘制箱线图、饼图和直方图
    第2-1课:Seaborn 初体验
    第2-2课:分类特征统计图
    第2-3课:关系统计图和回归统计图
    第2-4课:数据分布统计图和热图
    第2-5课:实战练习
    第3-1课:绘图新概念
    第3-2课:几何对象和美学映射
    第3-3课:案例剖析
    第4-1课:Plotly 初体验
    第4-2课:绘图类的应用
    第4-3课:3 种统计图及示例
    第4-4课:高级制图案例剖析
    第5-1课:Pyecharts 初体验
    第5-2课:地理信息可视化及扩展应用
    第6-1课:Bokeh 初体验
    第6-2课:常用图形
    第6-3课:重在交互

    阅读全文: http://gitbook.cn/gitchat/column/5c6cd09e7fa9074fde9c8909

    展开全文
  • 数据仓库规范

    千次阅读 2018-06-21 09:41:25
    数据仓库层次结构规范1.1 基本分层结构系统的信息模型从存储的内容方面可以分为,STAGE接口信息模型、ODS/DWD信息模型,MID信息模型、DM信息模型、元数据信息模型。在各个信息模型中存储的内容如下描述: 1) SRC...

    一. 数据仓库层次结构规范

    1.1 基本分层结构

    系统的信息模型从存储的内容方面可以分为,STAGE接口信息模型、ODS/DWD信息模型,MID信息模型、DM信息模型、元数据信息模型。

    在各个信息模型中存储的内容如下描述:

     

    1)        SRC接口层信息模型:提供业务系统数据文件的临时存储,数据稽核,数据质量保证,屏蔽对业务系统的干扰,对于主动数据采集方式,以文件的方式描述系统与各个专业子系统之间数据接口的内容、格式等信息。与该模型对应的数据是各个专业系统按照该模型的定义传送来的数据文件。STAGE 是生产系统数据源的直接拷贝,由ETL过程对数据源进行直接抽取,在格式和数据定义上不作任何改变。与生产系统数据的唯一不同是,STAGE层数据具有时间戳。

        STAGE层存在的意义在于两点:

    (1) 对数据源作统一的一次性获取,数据仓库中其他部分都依赖于STAGE层的数据,不再重复进行抽取,也不在生产系统上作运算,减小生产系统的压力;

    (2) 在生产系统数据已经刷新的情况下,保存一定量的生产系统的历史数据,以便在二次抽取过程中运算出错的情况下可以进行回溯。

     

     

    2)        ODS/DWD层(对应原模型的ODS和DW层)信息模型:简称DWD层是数据仓库的细节数据层,是对STAGE层数据进行沉淀,减少了抽取的复杂性,同时ODS/DWD的信息模型组织主要遵循企业业务事务处理的形式,将各个专业数据进行集中。为企业进行经营数据的分析,系统将数据按分析的主题的形式存放,跟STAGE层的粒度一致,属于分析的公共资源。

     

     

    3)   MID 信息模型:轻度综合层是新模型增加的数据仓库中DWD层和DM层之间的一个过渡层次,是对DWD层的生产数据进行轻度综合和汇总统计。轻度综合层与DWD的主要区别在于二者的应用领域不同,DWD的数据来源于生产型系统,并为满足一些不可预见的需求而进行沉淀;轻度综合层则面向分析型应用进行细粒度的统计和沉淀。

     

    4)   DM信息模型:为专题经营分析服务,系统将数据按分析的专题组织成多维库表的形式存放,属于分析目标范畴的数据组织与汇总,属于分析的专有资源。其信息主要来源于DWD 和MID层汇总,反映实时的经营状况,时间维度为天。而历史经营状况的分析,时间维度一般为月,同时也具有季度、年这样的维度。

     

    5)  MDW元数据信息模型:描述数据及其环境的数据,即是对数据资源的描述,是信息共享和交换的基础和前提,用于描述数据集的内容、质量、表示方式、空间参考、管理方式以及数据集的其他特征。一般来说,它有两方面的用途。首先,元数据能提供基于用户的信息,如记录数据项的业务描述信息的元数据能帮助用户使用数据。其次,元数据能支持系统对数据的管理和维护, 元数据机制主要支持以下五类系统管理功能:

    (1)描述哪些数据在数据仓库中;

    (2)定义要进入数据仓库中的数据和从数据仓库中产生的数据;

    (3)记录根据业务事件发生而随之进行的数据抽取工作时间安排;

    (4)记录并检测系统数据一致性的要求和执行情况;

    (5)衡量数据质量。

     

     

    1.2 各层物理表前缀

        在构建数据仓库时,至少应该具备以下物理几层:

     

    联通数据模型规范要求的层次

    数据中心物理模型层次名称

    物理表前缀

     

    维度数据层

    DIM_

    数据集市层(DM)

    展示层

    DM_

    主题域

    DW_F_

    轻度汇总层(MID)

    轻度汇总层

    DW_M_

    细节数据层(ODS/DWD)

    细节数据层

    DW_V_

    接口层(STAGE)

    接口层

    SRC_

     

    1.3数据库对象命名规范

     所有数据库对象名称均使用26个大写英文字母、下划线或数字来命名,并不得以下划线开头。

    1.3.1 用户

         用户名和表空间的名称应该采用同系统应用相似的英文字符或字符缩写,表空间所对应的一个或多个物理文件名也应有相关性。用户创建的数据索引最好和数据文件分开存放在不同表空间,以减少数据争用和提高响应速度。

      以上从逻辑上分出的各数据层应当在数据库中用户实现其分离,规定如下:

     

     

    数据层名称

    用户

    物理表

    备注

    接口层

    SRC

    SRC

     

    沉淀数据层

    DW

    DW_V,DW_M,DW_F

     

    数据集市层

    DM

    DM_

     

    元数据层

    MDW

    MDW_

    目前未设计

    维度数据层

    DIM

    DIM_

     

     

    1.3.2 数据库表空间

    数据库表空间命名,原则上以数据仓库的基本分层结构为准,以TBS_作前缀,为避免单个表空间数据量过大,带来管理上的不便或者引起I/O瓶颈,对于STAG和ODS/DWD数据量比较大的层,可采用多个表空间存储数据,单表空间容量不要太大,以便于业务划分和存储管理为原则,建议单表空间容量控制在800G之内,表空间数据文件建议值为4G。

    • 数据表空间

    数据仓库分层结构

    用户

    表空间名

    数据文件/裸设备

    STAG

    SRC

    TBS_STAG001

    ……

    TBS_STAGXXX

    2G=<单设备文件<=8G,建议值:4G

    DWD

    DW

    TBS_DWV001

    ……

    TBS_DWVXXX

    存放以dw_v开头的表

    INDX_TBS_DMV

    存放以dw_v开头的表的索引

    MID

     

    MID

     

    TBS_MID

    同上

    DM

    DM

    TBS_DM

    同上

    INDX_TBS_DM

    DM索引

    DIM

    DIM

    TBS_DIM

    同上

     表名长度不能超过28个字符,表名中含有单词全部采用单数形式,单词选择能够概括表内容的一个或多个英文单词,多个单词间使用下划线分割,单词如果过长可以使用缩写形式。

    命名规则如下:

     

    表的类型

    前缀

    层次

    说明

    示例

    维度表

    DIM_

    DIM

    DIM_+主键

     

    客户视图

    DW_V_USER_

    DW_M_USER

    DW

    三个视图

     

    产品视图

    DW_V_PROD_

    DW_M_PROD_

    DW

     

    市场营销视图

    DW_V_MART_

    DW_M_MART_

    DW

     

    发展域

    DW_F_DEV_

    DW

    8个主题域

    根据业务具体分为:

    移动业务DW_F_DEV_M_

    智能网DW_F_DEV_I_

    数固DW_F_DEV_D_

    收入域

    DW_F_INCO_

    DW

    同上

    使用域

    DW_F_USE_

    DW

    同上

    增值域

    DW_F_INC_

    DW

     

    成本域

    DW_F_COST_

    DW

     

    资源域

    DW_F_RES_

    DW

     

    竞争域

    DW_F_COMP_

    DW

     

    服务域

    DW_F_SERV_

    DW

     

     

    1.3.4 数据库分区表规范

    对于海量数据表要考虑设计为分区表。

    1. 三户日资料保存一个月,按日期主分区按地区子分区,
    2. 主分区命名为:P两位日期编码(如P01),
    3. 子分区命名为:P两位日期编码_SP地区编码(如 P01_SP188),并且必须加上月份字段否则没法区分是那月的资料。

    2.三户月资料按帐期主分区按地区子分区,

    主分区命名为:P帐期编码(如P200701),

    子分区命名为:P帐期编码_SP地区编码(如 P200701_SP188)。

     

    3.视图级日数据表按帐期和地区主分区按日期子分区,

    主分区命名为:P帐期编码_地区编码(如P200701_188),

    子分区命名为:P帐期编码_地区编码_SP两位日期编码(如 P200701_188_SP01)。

     

    4.视图级月数据表按帐期主分区按地区子分区,

    主分区命名为:P帐期编码 (如P200701),

    子分区命名为:P帐期编码_SP地区编码(如 P200701_SP188)。

     

    5.主体域级数据按帐期主分区按日期子分区,

    主分区格式为:P帐期(如 P200701),

    子分区格式为:P帐期_SP两位日期编码(如 P200701_SP01)。

    老杨让把主题域建表分区规范改为:

    主体域级数据按帐期和地区主分区按日期子分区,

    主分区命名为:P帐期编码_地区编码(如P200701_188),

    子分区命名为:P帐期编码_地区编码_SP两位日期编码(如 P200701_188_SP01)

    1.3.5 数据库表索引

     

    命名以IDX+表名+一位流水号.例:IDX_ODS_BUSI_USER_1;如果表名过长可以使用缩写形式

    1.3.6 数据库表键值

     

       主键命名以PK+表名+一位流水号(1~9).例: PK_DEPT_1 ;如果表名过长可以使用缩写形式

     

     

       外键命名以FK+表名+一位流水号(1~9).例: FK_DEPT_1;如果表名过长可以使用缩写形式

     

     

     

    1.3.7 数据库字段命名规范

    数据库字段名中含有单词选择能够概括表内容的一个或多个英文单词,多个单词间使用下划线分割,单词如果过长可以使用缩写形式。

    一些基本字段名示例:

    用户id     USER_NO

    用户数      USER_COUNTS

    话单数      CDR_NUM

    通话时长    CALL_DURATION

    计费次数    MOBILE_TIMES

     

    每个字段必须有注释,并且在生成SQL脚本时一并生成,创建表时必须创建注释。

    保持字段名和类型的一致性,同一字段名在不同表中必需保持同一数据类型。数据类型长度在定义时应稍大于目前标准的长度,用空间来换取将来变更带来的不便。

    1.3.8 数据库存储过程规范

    (1)存储过程命名规则:P_目标表。

    (2)存储过程要求有注释,注释内容为:列出创建人,创建用途,创建时间。

    (3)存储过程日志规范:

    每一存储过程均应记录执行存储过程的日志信息。必须调用专用写日志的存储过程,同时有exception时的处理机制。

    (4)存储过程修改规范

    修改时应注释清楚修改人,修改日期,修改原因和修改内容。

    1.3.9  数据库函数命名规范

    函数命名规则F_功能,比如F_TRAN_AREA。

    1.3.10 据库触发器的命名规范

    触发器以TR作为前缀,触发器名为相应的表的别名加上后缀,INSERT触发器加‘_INSERT’,Delete触发器加‘_DELETE’,Update触发器加‘_UPDATE’,如:TR_CUST_INSERT。

    1.3.11 序列命名规范

     序列以S作为前缀,序列命名规则为S_字段别名。

     

     

     

    二. 实施流程规范(完善中。。)

     

    (1)规划

           对实施计划的规划.

    (2)设计

           设计实施方案(包括统一模型的修改)。

    (3)实施

           具体实施过程。

    (4)测试

           对实施结果测试。

    (5)反馈

           对实施过程中收集到的相关信息(系统需求、实施中遇到的问题和测试结果等)

           反馈到相关部门和人员。

    三. 数据库安全管理规范

     

    为了规范管理,做好经营分析数据仓库的安全管理工作,实现不同的责任人不同的层次,将用户权限尽可能的管理起来同时又不影响正常工作,需要对数据库进行安全管理。

           数据库安全管理从以下几个方面来进行:

    3.1.   用户组管理

           对用户进行分类,目前经营分析应用用户可以分为如下几部分

    • 前台程序开发人员
    • 数据库开发人员
    • 数据库管理员
    • 外部使用人员

           数据库管理人员由项目经理和数据经理来掌控,一般情况下不得使用DBA角色登陆数据库。

           数据人员使用数据库开发人员角色登陆,每个数据人员一个用户,归属数据库开发人员组。

           前台程序开发人员,由界面开发人员使用,可以查看所有的表,但是无法进行DDL操作。

           外部使用人员,主要是面向联通用户和临时用户   

    3.2.   用户权限设定

           对不同的用户组,在不影响正常工作的情况下,对用户组及用户权限的设定原则为权限越小越好。

    3.3.   用户密码管理

           对用户密码进行限制,必须由2位以上数字,2位以上字符,2位以上特殊字符组成

           不允许用户密码和用户名同名

           不允许用户密码和用户名相似

    3.4.   用户资源管理

           除了系统使用的用户(SRC/ODS/DW)等外

           对用户使用的系统资源进行限定

           限定用户使用表空间

           限定用户使用临时表空间

           限定用户使用回滚断

           限定用户使用内存

    3.5.   IP限定

           对于普通用户,实行IP和用户名绑定的策略

           对于外部开放用户,要进行IP申请,由数据经理或者项目经理审核通过后予以开通

    3.6.   数据库监控

    数据库监控,主要对以下几个方面进行监控:

    3.6.1.   数据库空间占用率

    select a.tablespace_name,
           free,
           total,
           round(((b.total-a.free)/b.total),2) 剩余占比
    from ( select tablespace_name,round(sum(bytes)/power(1024,3),2) free
           from dba_free_space
           group by tablespace_name
         )     a,
         ( select tablespace_name,round(sum(bytes)/power(1024,3),2) total
           from dba_data_files
           group by tablespace_name
         )     b
    where a.tablespace_name = b.tablespace_name;

    3.6.2.     会话情况

    select *
    from v$session a,
         v$sql     b
    where a.sql_address  = b.address;

    3.6.3.   aix操作系统中杀掉一些进程的脚本

    select 'kill -9 '|| p.spid||'',s.sid

    from v$session s,v$process p

    where s.paddr = p.addr

    and s.username is not null

    and s.sid = 54

    3.6.4.   查看JOB

    SELECT *
    FROM User_Jobs

    3.6.5.   分区操作

    查看分区子分区

    SELECT *
    FROM ALL_TAB_PARTITIONS
    WHERE TABLE_NAME = 'DW_V_USER_MOBILEUSER';

    SELECT *
    FROM ALL_TAB_SUBPARTITIONS
    WHERE TABLE_NAME = 'DW_V_USER_MOBILEUSER';

    增加分区

    格式:alter table 表名 add partition分区名 values less than (值)

    如:  alter table dm_reinnet_user add partition p200801 values less than ('200802')
    alter table dm_reinnet_user add subpartition p200801_SP001 values ('002')

    删除分区

    格式:alter table 表名 drop partition partition 分区名

    如:  alter table dm_reinnet_user drop partition 200801

    alter table dm_reinnet_user drop subpartition  p200801_SP001

    3.6.6.   数据库的无效索引

     

     

    查看目前数据库中的索引情况

    3.6.7.   数据库的无效对象

    查看目前数据库的对象有效性,主要针对脚本

    3.6.8.   数据库表分区的是否到达限额

    查看是否有表分区不满足需求的情况,这项监控根据具体需求来

    3.6.9.   数据库内存占用情况

    查看目前数据库内存的占用情况

    3.6.10.DDL语句的监控

    查看各种DDL语句的使用情况,记录操作者的IP,时间,用户名等情况

    3.6.11.特定DML语句的监控

    对某些特定的重要的数据库对象,记录DML操作的历史

    3.7.   数据库审计

    3.7.1.   语句审计(Statement Auditing)

      对预先指定的某些SQL语句进行审计。这里从SQL语句的角度出发,进行指定。

      审计只关心执行的语句。

      例如,audit CREATE TABLE;命令,就表明对"create table"语句的执行进行记录。

      不管这语句是否是针对某个对象的操作

    3.7.2.   权限审计(Privilege Auditing)

      对涉及某些权限的操作进行审计。这里强调"涉及权限"

      例如,audit CREATE TABLE;命令,又可以表明对涉及"CREATE TABLE"权限的操作进行审计,所以说,在这    种命令的情况下,既产生一个语句审计,又产生了一个权限审计。有时候"语句审计"和"权限审计"的相    互重复的。这一点可以后面证明。

    3.7.3.   对象审计(Object Auditing)

      记录作用在指定对象上的操作。

     

    四.管理说明

    4.1 关于数据模型和数据仓库的管理

    为了使数据仓库安全、层次清晰、版本的稳定以及和总部模型的一致,我们规定数据经理对数据仓库和数据模型全权负责,具体包括如下:

    1. 所有关于数据库结构的更改都要由数据经理完成,其中包括对控制文件、参数文件、日志文件、表空间等的修改。

    2. 删除原模型中的表、向模型中增加表或者向原有表中增加字段都要让数据经理知道、批准并且做好修改记录,修改后的模型以及修改记录要及时提交到总部的SVN服务器。修改记录参照:

     

     

    时间

    表名称

    更改说明

    修改人

    备注

    2007-4-2

    DW_F_INCO_M_CHARGE_MONTH

    字段IS_GROUP的类型改为VARCHAR2(1)

    屈大虎

     

    DW_V_USER_CHARGE_DAY

    增加字段AREA_NO、CITY_NO、LONG_TIMES、FLUX、ACCT_MONTH

     

    DW_F_DEV_M_ONNET_USER

    更改入网年度字段IINNET_YEAR为入网年月INNET_MONTH;
      删除在网时长分档字段INNET_MONTH_LEVEL

     

    DIM_USER_STATUS

    增加停机类型字段

     

    DW_V_USER_SINGLE_CALL_MONTH

    更名为DW_M_USER_SINGLE_CALL_MONTH
      增加一个免费标记字段IS_FREE

     

    2007-4-3

    DW_V_USER_CDR_NOMASTER

    增加一个无主详单表(河北需求)

    屈大虎

     

    DW_M_USER_NAR_STW_DAY

    增加一个神通王用户日窄表(河北需求)

    DW_M_USER_NAR_STW

    增加一个神通王用户月窄表(河北需求)

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    转自:https://www.cnblogs.com/HondaHsu/p/5314176.html
    展开全文
  • 数据仓库设计规范文档

    千次阅读 2020-08-31 19:43:43
    数据仓库设计规范文档 版本 更新内容 备注 v1.0 创建文档 2020-08-11 一. 数仓建设 1.1. 数据模型架构规范 分层是为了解决 ETL 任务及工作流的组织、数据的流向、读写权限的控制、不同需求的满足等各类...

    #数据仓库设计规范文档

    版本更新内容备注
    v1.0创建文档2020-08-11
    v1.1新增词根相关2020-08-31

    一. 数仓建设

    1.1. 数据模型架构规范

    分层是为了解决 ETL 任务及工作流的组织、数据的流向、读写权限的控制、不同需求的满足等各类问题。
    总体来说,数仓划分为操作数据层、数据仓库层和数据集市层三部分

    数据层次的划分

    • ODS:Operational Data Store,操作数据层,在结构上其与源系统的增量或者全量数据基本保持一致。它相当于一个数据准备区,同时又承担着基础数据的记录以及历史变化。

    • DW: 数据仓库层 细分为DWS和DWA。它的主要作用是完成数据加工与整合、建立一致性的维度、构建可复用的面向分析和统计的明细事实表以及汇总公共粒度的指标。

      1. 维度层: 基于维度建模理念思想,建立整个企业的一致性维度

      2. DWS (Data Warehouse Service),明细数据层,以业务过程为建模驱动,基于每个具体业务过程的特点,构建最细粒度的明细层事实表。可以结合企业的数据使用特点,将明细事实表的某些重要维度属性字段做适当的冗余,即宽表化处理

      3. DWA (Date Warehouse Aggregation),汇总数据层。

      4. 临时层: 生产明细表和聚合表的时候,不可避免地会产生许多中间结果。所有这些中间结果并不承担对外提供服务的职责——它们对数据仓库的使用者是不可见的。为此单独设计了一个临时层来存放数仓层加工过程中可能产生的各种结果。临时层是在 Hive 上额外开辟的一个数据仓库开发人员专用的库。它承担了数据生产过程中问题数据的跟踪,也是数据存储清理时优先考虑的一块空间

    • DM:Data Mart,数据集市层。

    数据仓库分层架构

    1.2. ODS层设计规范

    ODS层主要是解决:1)导表的冲突,2)落后的数据仓库中间层建设和日益增长的业务需求之间的矛盾。

    • 导表的冲突

    由于数据源有各种各样的库,源表表名重复是很正常的情况。因此我们需要给每个表加上主题域前缀,从而避免来自不同主题域的同名表之间的冲突。当同一主题域下出现同名表时,我们辅以额外的表后缀来区分。

    落地层解决了统一导表的落地问题,也承担着全局 ETL 中的第一轮 Extract。原则上是使落地层里的数据和业务数据保持一致,这也是为了方便将来数据问题的排查与核对。

    • 数仓建设和业务需求之间的矛盾

    当时我们的人力完全无法满足众多需求方对数据的需求——数据中间层的建设赶不上飞速奔跑的业务需求。于是,一个折中的方法是让业务方直接使用落地层,自行处理一些不跨主题域的需求。这里有业务方非常熟悉的原始表,他们能非常迅速地获得所需要的数据。这也有利于快速、低成本地进行一些数据方面的探索和尝试。

    ####ODS层命名规范

    • 表命名规范

    • 表命名规则:主题域_项目名_原表名[_可选的后缀]。

    • 可选的后缀的含义

      • _incr : 只包含了增量部分
      • _tmp{从0开始的序号} :ODS ETL过程的临时表
      • _hh : 按小时同步的全量表
      • _incr_hh :按小时同步的全量表

    示例:

    pc_mysql_minieastdaypc_config_newsrank : 项目pc从mysql:minieastdaypc中全量导入的config_newsrank
    pc_mysql_minieastdaypc_config_newsrank_incr :项目pc从mysql:minieastdaypc中增量导入的config_newsran
    pc_oracle_minieastdaywap_config_newsrank : 项目pc从oracle:minieastdaypc中全量导入的config_newsrank
    h5_log_active : 项目h5 active日志

    表命名不要怕长,要能一眼看清楚含义,表注释要清晰,类似 ods抽取的mysql业务表注释写: 从127.0.0.1/pc:config_newsrank 抽取。

    • 字段命名规范
      • 字段默认使用源系统的字段名。
      • 字段名与关键字冲突时,在源字段名后加上col,即源字段名col。

    ####数据存储及生命周期管理规范

    数据表类型存储方式最长存储保留策略
    ODS流水型全量表按天分区不可再生情况下,永久保存
    日志:视情况保留
    ODS镜像型全量表按天分区重要的业务表及需要保留历史的表视情况保存
    ODS全量表的默认生命周期为2天,支持通过dt=max_pt(tablename)方式访问数据
    ODS增量表按天分区有对应全量表,最多保留最近14天分区数据。
    无对应全量表,需要永久保留数据。
    ODS ETL过程临时表按天分区最多保留最近7天分区

    1.3. DW 数仓层设计规范

    1. 维度层

    • 表命名规范

    dim_[业务/pub]{维度定义}[_{自定义命名标签}],其中的pub与具体业务无关,各个业务部都可以共用,例如时间维度。

    示例:

    dim_pc_config_newsrank

    2. DWS (Data Warehouse Service) 明细数据层

    • 表命名规范
      dws_主题域[_可选的二级主题域]_相关描述

    示例:

    dws_pc_active

    dws_pc_show

    dws_pc_img_show

    3. DWA (Date Warehouse Aggregation),汇总数据层。

    • 表命名规范
      dwa_主题域_聚合维度

    示例:

    dwa_pc_softtype_qid_uid_pv :根据softtype,qid,uid聚合的表

    4. 临时层

    • 表命名规范
      tmp_项目名_业务名_时间
      mid_项目名_业务名

    示例:

    tmp_pc_information_20200810: 以tmp开头和时间结尾的临时层表可以直接删除

    mid_pc_active: 以mid开头的临时层的表可以删除数据

    1.4. DM 数据集市层设计规范

    数据集市层 (Data Mart) 根据主题域的不同在物理上进行划分——它表现为多个相互独立的库,各个数据集市之间不允许做数据依赖。每个数据集市可以由该主题域的使用方在数据仓库规范下自行开发和建设。

    主要依据是以分析的主题对象为建模驱动,基于上层的应用和产品的指标需求,构建公共粒度的汇总指标事实表,以宽表化手段来物理化模型

    整体参考:

    分层数据库数据库名表命名规范示例备注
    ODS 落地层ods主题域_项目名_原表名[_可选的后缀]pc_mysql_minieastdaypc_config_newsrank
    pc_oracle_minieastdaywap_config_newsrank
    h5_log_active
    mysql根据实际情况按照拉链表或者增量导入
    log表类似pc_log 开头即可
    表做好注释,这样能看出从哪里导入的
    明细层dwdws_主题域[_可选的二级主题域]_相关描述dws_pc_active
    dws_pc_show
    dws_pc_img_show
    聚合层dwdwa_主题域_聚合维度dwa_pc_softtype_qid_uid_pv根据softtype,qid,uid聚合的表
    通用维度层dwdim_[业务/pub]{维度定义}[_{自定义命名标签}]dim_pc_config_newsrank其中的pub与具体业务无关,各个业务部都可以共用,例如时间维度。
    临时层tmptmp_项目名_业务名_时间
    mid_项目名_业务名
    tmp_pc_information_20200810
    mid_pc_active
    以tmp开头和时间结尾的临时层表可以直接删除
    以mid开头的临时层的表可以删除数据
    数据集市dm_dc :dc报表数据集市
    dm_interface :对外接口数据集市
    rt_业务相关描述
    根据实际情况设计表名

    1.5. 其他规范

    1. 词根

    词根是维度和指标管理的基础,划分为普通词根与专有词根,提高词根的易用性和关联性。

    · 普通词根:描述事物的最小单元体,如:类型-type。

    · 专有词根:具备约定成俗或行业专属的描述体,如:智能咨询-qa。

    (词根标准需大家一起收集并统一标准)

    2. 公共规范

    • 所有命名都要按照蛇形命名法 (snake_case)——全小写,单词之间用下划线分隔
    • 所有表,列都需要注释
    • 表名、字段名需以字母为开头。
    • 表名、字段名最长不超过64个英文字符
    • 优先使用词根中已有关键字(数仓标准配置中的词根标准),定期Review新增命名的不合理性。

    公共字段定义规范

    • 数据统计日期的分区字段按以下标准:

      • 按天分区:dt(YYYYMMDD)。
      • 按小时分区:hh(00-23)。
      • 按分钟:mi (00-59)。
    • is_{业务}:表示布尔型数据字段。以Y和N表示,不允许出现空值域。

    3. 指标命名规范

    结合指标的特性以及词根管理规范,将指标进行结构化处理.

    A. 基础指标词根,即所有指标必须包含以下基础词根(需大家共同维护):

    基础指标词根英文全称Hive数据类型Oracle数据类型长度精度词根样例
    数量countBigintNumber100cnt
    比率/占比ratioDecimalNumber104ratio0.9818

    B.业务修饰词,用于描述业务场景的词汇,例如trade-交易。

    C.日期修饰词,用于修饰业务发生的时间区间。

    时间类型全称词根备注
    小时hourh
    dailyd
    weeklyw
    monthm
    quarterq
    yeary

    D.聚合修饰词,对结果进行聚集操作。

    类型全称词根备注
    平均averageavg
    周累计wtdwtd本周一截止到当天累计
    总量totaltol
    标准差standarddeviationstd

    E.基础指标,单一的业务修饰词+基础指标词根构建基础指标 ,例如:交易金额:trade_amt。

    F.派生指标,多修饰词+基础指标词根构建派生指标。派生指标继承基础指标的特性,例如:安装门店数量:install_poi_cnt。

    G.普通指标命名规范,与字段命名规范一致,由词汇转换即可以。

    H.日期类型指标命名规范,命名时要遵循:业务修饰词+基础指标词根+日期修饰词。将日期后缀加到名称后面.例如:7日交易金额:trade_amt_7d

    I.聚合类型指标,命名时要遵循:业务修饰词+基础指标词根+聚合类型+日期修饰词。将累积标记加到名称后面.如:7日平均交易金额:trade_amt_avg_7d

    4. 数据开发规范

    • 表别名定义约定
      建议将所有的表加上别名。一旦在SELECT语句中给操作表定义了别名,在整个语句中对此表的引用都必须惯以别名替代。考虑到编写代码的便捷性,约定别名尽量简洁,同时避免使用关键字。

      • 表别名采用简单字符命名。
      • 多层次的嵌套子查询别名之前要体现层次关系,SQL语句别名或分层的命名,从第一层次至第四层次,分别用P、S、U、D表示,取意为Part,Segment,Unit,Detail。也可用a、b、c、d来表示第一层次到第四层次。对于同一层次的多个子句,可以在字母后加1、2、3、4区分。
      • 必要时,为表别名添加注释

    待续。。。。

    3. 任务命名及工作流组织规范

    任务是组成工作流的最小单位,也是完成一次 ETL 的最小开发单位,同时也是调度任务进行失败重试的最小单元。我们要求一个任务只写一张目标表,同时任务的命名中必须包含该目标表的表名。
    工作流是一次调度应用的最小单元,它将一组具有相关性的共同调度频率的任务组织在一起。
    同一主题、同一分层且同一调度周期的任务组织成一个工作流。

    工作流组织规范

    • 工作流命名规范

      • 同步任务命名规范 :imp_项目名_{源系统表名}
      • 同步节点导出任务 :exp_项目名_{源系统表名}

    待续

    1.6. 主题域的划分

    主题域的考虑可以从数据仓库层或者数据集市层出发,考虑将全域的数据分散到若干个主题中存放。就像图书管理员需要将书籍分门别类一样,主题域的划分是为了将相关的数据组织在一起,从而使其更容易被寻找和使用。

    1.7. 权限的设计

    待定:根据后续实际情况

    1.8. 数据字典

    业务表字段都需要加注释

    元数据管理是一个单独的模块

    1.9. 任务的优先级

    在 Hadoop 的环境下,任务之间不可避免会出现集群资源竞争的关系。如果没有一个优先级规则,那么大量任务运行时,产出时间的波动是不可控的。需要任务的优先级,在调度层面让高优先级的任务优先进入队列,从而更容易获得资源。

    待定…

    参考:

    展开全文
  • 在讲企业为什么要做数据化管理之前,我们先来简单了解下数据化是什么。数据化是将业务领域中的一切活动进行计量,实现收集数据、整理数据、记录数据,分析数据的一体。 数字已经成为未来企业发展的必然趋势。...
  • 6. 测试数据管理规范

    千次阅读 2019-09-06 11:41:11
    本章节是以当前项目举例说明的,可能涉及到一些具体的业务数据,列位看官可以根据例子抽象出自己需要的内容进行参考。 2. 环境概述 环境介绍: ​ 环境按照测试流程中的测试种类,整个测试环境分为IX、SX、TX和...
  • 优先制定数据资源、信息共享开放、系统整合共享、服务事项分类编码、业务操作规范、电子证照等标准规范做好与国家基础数据库和重大信息工程之间的标准衔接,推进办事材料目录、标准、电子,做到“同一事项...
  • 的中文翻译一般叫做“规范化”,是一种对数值的特殊函数变换方法,也就是说假设原始的某个数值是x,套上一个起到规范化作用的函数,对规范化之前的数值x进行转换,形成一个规范化后的数值,即 所谓规范化,是...
  • 3大领域,4大方向,做好数据分析岗位的职业规划

    万次阅读 多人点赞 2018-03-15 11:09:05
    最近有不少同学在后台问我数据分析的职业发展相关,这里先列一个简易大纲。它更多是以我所在的互联网行业展开的。入门和职业规划应该从两个角度考虑:领域和路线。领域是不少新人常忽略的要素,其实数据分析不会脱离...
  • 数据统计埋点工作框架及细节规范

    千次阅读 2019-08-09 21:56:15
    首先,最基础的是要熟悉数据工具平台与产品业务,其次,要学会逐步建立产品完整的数据指标体系,最后,是能够通过数据分析解读驱动业务发展。 具体拆解来看,主要包含: (1)数据层面 源数据层:数据源的采集、...
  • 最近碰到很多社区朋友都在关心 BI 领域有关 SaaS ...我最近也参加了一些厂商举办的关于大数据行业、产品类的话题交流,对于 BI 数据可视分析领域的 SaaS 发展情况简单总结了一些个人看法,在这里与大家分享和交流。
  • 小尝试:基于指标体系的数据仓库搭建和数据可视关于作者:小姬,某知名互联网公司产品专家,对数据采集、生产、加工有所了解,期望多和大家交流数据知识,以数据作为提出好问题的基...
  • 虽然很多企业都有自己的标签库,或者说是DMP吧,但毕竟不是每个产品经理都有机会让平台承载的标签数量超过一百万,原因很简单,要么没需求,要么没数据,要么没必要。 我记得当初打造1000+标签库的时候,也是觉得太...
  • CSDN开源夏令营 百度数据可视实践 ECharts 期中总结 总结过去遇到的问题和难点
  • 企业对数据的利用有三个阶段:响应运营,响应业务,创造业务。数据中台解决的是响应业务的问题,第三阶段“创造业务”,则需要AI中台。36大数据已获得转载授权。原文作者:白发川...
  • 把相对复杂、抽象的数据通过可视的方式以人们更易理解的形式展示出来的一系列手段叫做数据可视数据可视是为了更形象地表达数据内在的信息和规律,促进数据信息的传播和应用。 在当前新技术支持下,数据可视...
  • 本文属于转载文章,如有侵权请通知。 地址:... ... 现在有很多图表库,但哪一个最好用?这可能取决于许多因素,如业务需求,数据类型,图表本身的目的等等。在本文中,每个JavaS...
  • 企业数字转型趋势是“数据”引领业务变革,数据集中管控成为大势所趋,如何做好数据共享和数据分析、如何发挥数据资产价值最大是我们信息工作首要目标,本文从基本术语及概念、数据共享服务、数据资源中心架构...
  • 数据库设计之规范化--------几种范式详解

    千次阅读 多人点赞 2018-07-09 16:00:50
    数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员...
  • 在电商数据运营中,对于客户而言,有两个很重要的指标对于扩大销售规模是很重要的:第一,提高顾客重复购买次数;第二,提高客户订单中的Basket size(即购物篮件数)。而第二个指标提高Basket size,就是让客户从...
  • 数据科学家-为大数据时代做好准备

    千次阅读 2013-03-13 09:56:38
    原文链接:为大数据时代做好...此外,像Hadoop这样能够在通用性服务器上工作的分布式处理技术的出现,也使得对庞大的非结构化数据进行统计处理的工作比以往更快速且更廉价。 然而,就算所拥有的工具再完美,它本身是
  • 前言 最近接到一个新的任务,说是在公司内部要...服务端开发者分享框架与设计模式,SQL深度优化,消息队列等等,前端开发者分享MVVM模式,WEB前端性能优化,数据可视,CSS3高级用法等等。 可以是一些通用的技术,比
  • 注:本文于2019年1月31日发表于微信公众号 谈数据(learning-bigdata) 在和一些客户、同事聊数据的时候,发现好多人对于数据相关的一些概念、作用并不是很清楚。这里我针对自己工作接触和学习积累的一些内容给大家...
  • 看看里面对于数据和问题的分类等。 我们出统计分析,可以按照标准出各个大类小类的各种指标数据。 结合这几天给潍坊弄的12345的报告, 整理出一个可以结合吴中现有平台数据,形成一个可以做到的分析的list。 == ...
  • 数据产品-指标体系与数据采集

    千次阅读 2020-06-12 11:05:48
    数据指标体系建立的第一步,就是要做好数据指标体系的规划,如若不规划则开展,很难实现“数据驱动增长”的快速落地 ① 难以快速定位问题原因:因为缺少体系的数据指标监控,更关注结果性数据,很多过程性数据往往...
  • 数据治理系列3:数据标准管理

    万次阅读 多人点赞 2019-05-30 16:39:48
    转载请注明,作者:石秀峰,公众号:learning-bigdata(谈数据) 导读:提到“标准”二字,我们...而我们所说的数据标准却不单单是指与数据相关的标准文件,数据标准是一个从业务、技术、管理三方面达成一致的规范...
  • 文章目录整理模板说明业务目标及操作Scrapy 模板操作流程项目创建shell项目默认文件生成配置配置 items.py配置 middlewares.py配置 pipelines.py配置 settings.py数据抓取Spider模板Spider下每个py文件parse_detail....
  • 360大数据中心平台的演进与实践

    千次阅读 2018-08-14 18:33:39
    本文根据徐皓老师在〖2018 DAMS中国数据资产管理峰会〗现场演讲内容整理而成。讲师介绍徐皓,奇虎360大数据中心技术总监。曾就职于华为,主要负责软件产品线平台相关研发...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 58,574
精华内容 23,429
关键字:

如何做好数据规范化