热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数仓相关面试题

数仓构建1.前期业务调研,如需求调研、数据调研、技术调研2.提炼业务模型、总线矩阵

数仓构建

1. 前期业务调研,如需求调研、数据调研、技术调研

2. 提炼业务模型、总线矩阵、划分主题域

3. 定制规范,如命名规范、开发规范、流程规范

4. 数仓架构分层
以阿里巴巴OneData建设为例:一般分为操作数据层(ODS:Operational Data Store)、公共维度模型层(CDM)和应用数据层(ADS)。其中公共维度模型层包括明细数据层(DWD和汇总数据层(DWS)。
公共维度模型层(CDM):存放明细事实数据、维表数据及公共指标汇总数据,其中明细事实数据、维表数据一般根据ODS层数据加工生成:公共指标汇总数据一般根据维表数据和明细事实数据加工生成。

CDM层又细分为DWD层和DWS层,分别是明细数据层和汇总数据层,采用维度模型方法作为理论基础,更多地采用一些维度退化手法,将维度退化至事实表中,减少事实表和维表的关联,提高明细数据表的易用性:同时在汇总数据层,加强指标的维度退化,采取更多的宽表化手段构建公共指标数据层,提升公共指标的复用性,减少重复加工。

组合相关和相似数据:采用明细宽表,复用关联计算,减少数据扫描。

公共指标统一加工:基于OneData体系构建命名规范、口径一致和算法统一的统计指标,为上层数据产品、应用和服务提供公共指标;建立逻辑汇总宽表。

建立一致性维度:建立一致的数据分析维表,降低数据计算口径、算法不统一的风险。

应用数据层(ADS):存放数据产品个性化的统计指标数据,根据CDM层与ODS层加工生成。

5)选择合适的数据模型,不同的行业所选取的模型不尽相同,合适的模型,更利于在数据存储,计算,开发,安全,以及数据查询的效率,更能体现数仓的价值。

综上所述:数仓建设这个问题的范围过于大,它包含了一个0-1的过程,此处只做大方面的回答,具体的细节问题还需另外讨论。

关于数仓构建,推荐阅读:《数据仓库架构和建设方法论》、《企业大数据平台仓库架构建设思路》、《详解数据仓库的实施步骤》


传统数仓和大数据数仓的异同?有哪些大的变化?

区别主要是数仓数据存储的地方不同,传统数仓数据存储在Mysql/Oracle等关系型数据库上,大数据数仓存储在Hadoop平台的Hive中(实际上是HDFS中),当然也有其他的数仓产品比如TD、Greenplum等。
我接触过的传统数仓技术架构是使用Kettle做ETL工具,数据保存在Mysql中,使用MSTR+Java开发的数据平台做可视化,随着数据量逐渐增大,事实表条数达到千万级,Kettle逐渐变得不稳定,单表做拉链的任务的执行时间也指数级增加,从1/2h到了6/7h。
公司考虑使用Hadoop平台的Hive做数据仓库,报表层数据保存在Mysql中,使用Tableau做报表系统,这样不用担心存储问题、计算速度也大大加快了。
在此基础上,公司开放了Hue给各个部门使用,这样简单的提数工作可以由运营自己来操作。

使用Presto可以做Mysql、Hive的跨库查询,使用时要注意Presto的数据类型非常严格。


数仓最重要的是什么?

数据的准确性,记得在一个统计网站上看过,好多数仓因为数据不准确被终止。数据的真正价值在于数据驱动决策,通过数据指导运营,在一个不准确的数据驱动下,结果可想而知。


如何保证数据的准确性?

元数据的建设与管理是其中重要的一个环节。元数据建设的目标是打通数据从接入到加工,再到数据消费的整个链路,规范元数据体系与模型,提供统一的元数据服务出口,保障元数据产出的稳定性和质量。首先梳理清楚元仓底层数据,对元数据做分类,如计算元数据、存储元数据、质量元数据等,减少数据重复建设,保障数据的唯一性。

另外,要丰富表和字段使用说明,方便使用和理解。根据元仓底层数据构建元仓中间层,建设元数据基础宽表,也就是元数据中间层,打通从数据产生到消费整个链路。

当然,也可在粒度、规范等方面展开,见仁见智。

如何做数据治理?数据资产管理呢?

在明确数据治理是数据管理的一部分之后,下一个问题就是定义数据管理。治理相对容易界定,它是用来明确相关角色、工作责任和工作流程的,确保数据资产能长期有序地、可持续地得到管理。

而数据管理则是一个更为广泛的定义,它与任何时间采集和应用数据的可重复流程的方方面面都紧密相关。

其实在数仓的整个链路中数据治理的理念是渗入其中的,在ETL过程中开发人员会对数据清洗这其实就是治理的一部分,再加上后期数据资产的管理和落定都有数据治理的渗入。

关于数据治理,推荐阅读:《面向企业数据中台的数据治理七把利剑》、《数据资产,赞之治理》

如何控制数据质量?

1. 数据质量保证原则:完整性,准确性,数据质量,及时性,一致性

2. 数据质量方法:数据资产等级的划定

3. 数据加工过程卡点校验

4. 风险点监控:针对在线或者离线数据的监控

5. 质量衡量:故障等级的划定以及数据质量的事件的记录

关于数据质量,推荐阅读:《当我们聊数据质量的时候,我们在聊些什么?》


元数据的理解?元数据管理系统?

元数据主要记录数据仓库中模型的定义、各层级间的映射关系、监控数据仓库的数据状态及ETL任务的运行状态。

元数据有重要的应用价值,是数据管理、数据内容、数据应用的基础,在数据管理方面为集团数据提供在计算、存储、成本、质量、安全、模型等治理领域上的数据支持。

元数据管理系统:首先梳理清楚元仓底层数据,对元数据做分类,如计算元数据、存储元数据、质量元数据等,减少数据重复建设,保障数据的唯一性。

另外,要丰富表和字段使用说明,方便使用和理解。根据元仓底层数据构建元仓中间层,建设元数据基础宽表,也就是元数据中间层,打通从数据产生到消费整个链路。

关于元数据,推荐阅读:《基于Hive进行数仓建设的资源元数据信息统计》、《饿了么元数据管理实践之路》、《有赞数据仓库元数据系统实践》、《元数据:数据治理的基石》


数仓如何分层的?及每一层的作用?

结合Inmon和Kimball的集线器式和总线式的数据仓库的优点,分层可为ODS【-MID】-DW-DM-OLAP/OLAM/app(不同企业略有差异)。

ODS层是将OLTP数据通过ETL同步到数据仓库来作为数据仓库最基础的数据来源。在这个过程中,数据经过了一定的清洗,比如字段的统一,脏数据的去除等,但是数据的粒度是不会变化的。ODS层的数据可以只保留一定的时间。

MID中间层是采用Inmon集线器架构的方式,使用范式建模(贴源)的方法。这一层主要是做规范化的事情,比如应用库表非规范化,字段格式复杂(json格式)需做一些处理。这一层不是必须有的。也不会对外开放使用。范式建模保证了数据一致性、唯一性、正确性。

DW-DM层是采用Kimball的总线式的数据仓库架构,针对部门(比如财务部门)或者某一主题(比如商户、用户),通过维度建模(推荐星型模型),构建一致性维度,原子粒度的数据是DW层,按照实体或者主题经过一定的汇总,建设数据集市模型。数据集市可以为OLAP提供服务。

注:OLAM是On-line Analytical Mining,即联机分析挖掘又称多维数据挖掘,由加拿大Simon Fraser大学Jiawei Han教授等数据立方体的基础上提出的一种新的数据挖掘技术。OLAM技术将数据挖掘技术(DM)和联机分析处理技术(OLAP)集成在一起,在多维数据库中发现知识。


为什么要分层的思考?

空间换时间:通过建设多层次的数据模型供用户使用,避免用户直接使用操作型数据,可以更高效的访问数据。

复杂问题简单化:将一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。

便于处理业务的变化:随着业务的变化,只需要调整底层的数据,对应用层对业务的调整零感知。

分层的价值

【易维护】

面向主题的特性决定了数据仓库拥有业务数据库所无法拥有的高效的数据组织形式,更加完整的数据体系,清晰的数据分类和分层机制。因为所有数据在进入数据仓库之前都经过清洗和过滤,使原始数据不再杂乱无章,基于优化查询的组织形式,有效提高数据获取、统计和分析的效率。

【高性能】

数据仓库的构建将大大缩短获取信息的时间,数据仓库作为数据的集合,所有的信息都可以从数据仓库直接获取,数据仓库的最大优势在于一旦底层从各类数据源到数据仓库的ETL流程构建成型,那么每天就会有来自各方面的信息通过自动任务调度的形式流入数据仓库,从而使一切基于这些底层信息的数据获取的效率达到迅速提升。

从应用来看,使用数据仓库可以大大提高数据的查询效率,尤其对于海量数据的关联查询和复杂查询,所以数据仓库有利于实现复杂的统计需求,提高数据统计的效率。

【简单化】

数据仓库是所有数据的集合,包括日志信息、数据库数据、文本数据、外部数据等都集成在数据仓库中,对于应用来说,实现各种不同数据的关联并使多维分析更加方便,为从多角度多层次地数据分析和决策制定提供的可能。

【历史性】

记录历史是数据仓库的特性之一,数据仓库能够还原历史时间点上的产品状态、用户状态、用户行为等,以便于能更好的回溯历史,分析历史,跟踪用户的历史行为,更好地比较历史和总结历史,同时根据历史预测未来。


推荐文章:

【大数据学习与分享】技术干货合集


关注大数据学习与分享,获取更多技术干货




推荐阅读
  • 腾讯安全平台部招聘安全工程师和数据分析工程师
    腾讯安全平台部正在招聘安全工程师和数据分析工程师。安全工程师负责安全问题和安全事件的跟踪和分析,提供安全测试技术支持;数据分析工程师负责安全产品相关系统数据统计和分析挖掘,通过用户行为数据建模为业务决策提供参考。招聘要求包括熟悉渗透测试和常见安全工具原理,精通Web漏洞,熟练使用多门编程语言等。有相关工作经验和在安全站点发表作品的候选人优先考虑。 ... [详细]
  • 在数据分析工作中,我们通常会遇到这样的问题,一个业务部门由若干业务组构成,需要筛选出每个业务组里业绩前N名的业务员。这其实是一个分组排序的 ... [详细]
  • Java 11相对于Java 8,OptaPlanner性能提升有多大?
    本文通过基准测试比较了Java 11和Java 8对OptaPlanner的性能提升。测试结果表明,在相同的硬件环境下,Java 11相对于Java 8在垃圾回收方面表现更好,从而提升了OptaPlanner的性能。 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • 一份来自清华的数据分析笔记,请查收!
    之前发过很多数据分析的文章,收到不少好评,但也有一些困惑:入门数据分析该学哪些知识点?该看哪些书?是从Pyth ... [详细]
  • python计算数据包校验和(python接口数据校验)
    本文目录一览:1、怎么用python算p值和t检验 ... [详细]
  • JVM 学习总结(三)——对象存活判定算法的两种实现
    本文介绍了垃圾收集器在回收堆内存前确定对象存活的两种算法:引用计数算法和可达性分析算法。引用计数算法通过计数器判定对象是否存活,虽然简单高效,但无法解决循环引用的问题;可达性分析算法通过判断对象是否可达来确定存活对象,是主流的Java虚拟机内存管理算法。 ... [详细]
  • PRML读书会第十四章 Combining Models(committees,Boosting,AdaBoost,决策树,条件混合模型)...
    主讲人网神(新浪微博:豆角茄子麻酱凉面)网神(66707180)18:57:18大家好,今天我们讲一下第14章combiningmodel ... [详细]
  • Python入门后,想要从事自由职业可以做哪方面工作?1.爬虫很多人入门Python的必修课之一就是web开发和爬虫。但是这两项想要赚钱的话 ... [详细]
  • 应用场景当遇到数据分类,聚类,预测等场景问题,普通的SQL方法无法解决,需要借助算法这件武器,比如聚类算法,分类算法,预测算法等等,但是手动去研究一个算法比较吃力,有没有那种工具, ... [详细]
  • 数据仓库、LODP、OLAP
    数据仓库:也称为企业数据仓库,是一种数据存储系统,它将来自于不同数据源的数据进行结构化数据聚合起来,用于业务智能领域的比较和分析 ... [详细]
  • 数据挖掘研讨课结束了,这门课的考核方法是每个同学根据班里面同学的课堂表现打分,然后老师再取截断平均值作为最后的分数。于是我就想,能否用p ... [详细]
  • 深度学习与神经网络——邱锡鹏
    深度学习与神经网络——邱锡鹏-一、绪论人工智能的一个子领域神经网络:一种以(人工))神经元为基本单元的模型深度学习:一类机器学习问题,主要解决贡献度分配问题知识结构:路线图:顶 ... [详细]
  • 分享篇:第十届“泰迪杯”数据挖掘挑战赛农田害虫图像识别(特等奖)一
    1.1赛题背景昆虫的种类浩如烟海,农田常见的昆虫是人工生态系统的重要组成部分。分辨益虫和害虫,保留益虫,消灭害虫,对于减轻害 ... [详细]
author-avatar
妈妈说称号长的人很牛也
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有