数据仓库高级面试题

数仓高内聚低耦合是怎么做的

定义

  • 高内聚:强调模块内部的相对独立性,要求模块内部的元素尽可能的完成一个功能,不混杂其他功能,从而使模块保持简洁,易于理解和管理。

  • 低耦合:模块之间的耦合度要尽可能的低,避免模块之间的复杂依赖,使得每个模块都可以独立存在,从而减少模块间的相互影响,提高系统的可维护性。

做到低耦合、高内聚

一般复杂的公共逻辑可以采用抽象类和抽象方法的方式下沉到共有模块中,然后由相关子类去实现抽象方法,来实现不同的功能。这样可以将复杂的逻辑拆分成各个子类,使得类之间的耦合度降低,提高代码的可维护性。

数仓中多重粒度的作用,以及实现

定义

在数据仓库中,粒度是指数据的细度。粒度越高,表示数据越细致,每个数据点所包含的信息量也就越大。粒度越低,表示数据的概括性越强,每个数据点所包含的信息量也就越小。

在数据仓库中,多重粒度指的是将数据按照多个不同的粒度进行存储,以便在需要时更方便地进行查询和分析。例如,可以将数据按年、月、日等不同的粒度进行存储,以便根据需里对数据进行按年、按月、按日等不同维度的分析。多重粒度数据仓库在实际应用中非常常见,能够满足大多数数据分析的需求。

作用

多重粒度数据仓库可以让我们更方便地对数据进行分析和查询,具体有以下几点作用:

1.提高查询效率: 将数据按照多个不同粒度存储,可以让我们更快地找到所需的数据。例如,如果我们需要查询某一天的销售数据,直接查询按日粒度存储的数据即可,而不用扫描整个数据仓库。

2、减少数据冗余:在数据仓库中,将数据按照多个粒度存储,可以减少数据几余,节省空间。例如,如果我们将每一天的销售数据都单独存储,那么一年的数据就需要存储 365 天的数据;如果将每一月的销售数据存储,则一年的数据只需要存储 12 个月的数据。

3、方便数据分析:多重粒度数据仓库可以让我们更方便地对数据进行分析。例如,如果我们想要对某一天的销售数据进行分析,可以直接查询按日粒度存储的数据;如果想要对某-月的销售数据进行分析,可以直接查询按月粒度存储的。

实现

在数据仓库中实现多重粒度是指在数据仓库中设计多种方式来表示和存储时间相关的数据。这样就可以在不同的粒度(例如年、月、日、小时等)》上查询数据,从而满足不同的分析需求

常用的实现方式有两种: 1.时间维度表:将时间的不同粒度分别建立为单独的维度表,并与事实表进行关联。例如,可以建立年、月、日、小时等维度表,并通过外键关联到事实表中。

2.时间层级表:将时间的不同粒度存储在同一个表中,并设计为层级结构。例如,可以将时间表设计为“年-月-日-小时”的层级结构,将每个时间点都存储在同一个表中。

具体选择哪种方式,取决于业务需求和数据查询的频率。

时间维度表的优势在于查询速度快,但维护成本较高,需要单独维护多个表。

时间层级表的优势在于维护成本低,但查询速度可能较慢。

如何提高查询效率

  1. 优化数据库结构,统一管理所有数据,减少查询的次数;

  2. 使用缓存技术,将查询结果保存到内存中,加速查询;

  3. 合理利用索引,提高查询的效率;

  4. 采用分布式系统,将查询任务分发到多台机器,提高查询速度;

  5. 采用消息队列技术,将批量数据进行拆分,减少查询时间;

  6. 利用数据库定时备份技术,减少查询时间;

  7. 采用数据库分片技术,将数据分布到多个数据库,提高查询效率;

  8. 采用数据库视图技术,将复杂的SQL语句拆分为多个简单的SQL语句,提高查询效率;

  9. 采用SQL优化技术,充分利用数据库的索引,提高查询效率;

  10. 采用数据库集群技术,将数据分布到多个数据库服务器,提高查询效率;

数仓数据域划分几种方式

我们采用四种方式对数仓数据域进行划分:

  1. 按照业务类型划分:比如销售、财务、研发、物流等等。

  2. 根据需求方划分:比如需求方为财务部,就可以设定对应的财务主题域,而财务主题域里面可能就会有员工工资分析,投资回报比分析等主题。

3 按照功能或应用划分:比如微信中的朋友圈数据域、群聊数据域等,而朋友圈数据域可能就会有用户动态信息主题、广告主题等。

4 按照部门划分:比如可能会有运营域、技术域等,运营域中可能会有工资支出分析、活动宣传效果分析等主题.

数仓构建有几种方式

建模方式

图片

数仓构建方式

说法1:

  1. 集成数仓构建:这种方法把各类数据存储在各自的数据库中,然后通过数据集成工具将数据集成到一个数仓中,以满足数据分析的需求。

  2. 数据融合数仓构建:这种方法是在源数据层面进行融合,将源数据经过整合、清洗、转换等操作,构建数据仓库,以满足数据分析的需求。

  3. 元数据数仓构建:这种方法是在元数据层面进行数据整合,建立元数据的抽象层,以便更好的管理和操作数据,以满足数据分析的需求。

  4. 大数据数仓构建:这种方法是将大数据仓库采用分布式存储的方式进行数据存储,以满足数据分析的需求。

说法2

1、基于现有系统构建:利用现有系统,如ERP、SCM、CRM等,通过开发定制或者引入第三方软件,构建数字化仓库管理系统。

2、新建系统构建:从零开始,根据实际需求,开发建立一套新的数字化仓库管理系统。

3、集成构建:将现有的传统仓库管理系统和新的数字化仓库管理系统进行整合,构建全新的仓库管理系统。

说法3

数仓构建有多种方式。这取决于您的需求、技术基础、数据来源和构建目标。

常用的数仓构建方式包括:

1.基于 ETL的数仓构建:在这种方式中,您可以使用 ETL (提取、转换、加载)工具来从源系统提取数据,然后在数仓中进行转换和加载。

2.基于 ELT 的数仓构建:在这种方式中,您可以使用 ELT(提取、加载、转换)工具来将数据从源系统提取到数仓,然后在数仓中进行转换。

3、基于事件驱动的数仓构建: 在这种方式中,您可以使用事件驱动的架构,在事件发生时即时地将数据加载到数仓中

4.基于流的数仓构建:在这种方式中,您可以使用流处理框架,以流的方式将数据实时加载到数仓中。

哪种方式最合适,取决于您的业务需求和技术环境。

粒度操作

常用的粒度操作有上卷、下钻、切片、切块、旋转、拉伸、锯齿等。

  • 上卷:上卷指的是增加粒度,将原来比较细的粒度提升到更大的粒度,从而让整体更清晰,更容易理解,更容易把握。

  • 下钻:下钻指的是减小粒度,将原来比较粗的粒度放低到更细的粒度,从而更加细致的把握数据的细节,更加清楚的把握数据的特征。

  • 切片:切片指的是将数据分割成若干个数据片,从而更加方便地进行管理和操作。

  • 切块:切块指的是将数据分割成若干个数据块,从而更加方便地进行管理和操作。

  • 旋转:旋转指的是对数据进行旋转操作,从而让数据看起来更加美观,更容易理解。

  • 拉伸:拉伸指的是对数据进行拉伸操作,从而让数据看起来更加清晰,更容易理解。

  • 锯齿:锯齿指的是对数据进行锯齿操作,从而让数据看起来更加精细,更容易理解。

SQL实现

SQL实现上卷下钻切片切块旋转通常包括以下步骤:

1、首先使用SELECT语句从数据库中选择所需要的表;

2、使用GROUP BY语句将数据按照指定的维度进行分组;

3、使用HAVING语句按照指定条件对分组数据进行筛选;

4、使用ORDER BY语句对分组后的数据进行排序;

5、使用LIMIT和OFFSET语句对数据进行分页;

6、使用CASE语句对数据进行旋转以形成报表。

数仓中ODS层命中多少为合理

数仓中ODS层的命中率是指数据在ODS层中的命中率。一般来说,ODS层的命中率应该尽量高,因为这意味着更多的数据是从ODS层获取的,而不是从原始数据源获取,这样可以减少对原始数据源的访问压力,并提高数据获取的效率。

不过,ODS层的命中率也不能太高,因为如果ODS层的命中率过高,就意味着ODS层的数据不够新,这可能会导致ODS层的数据不够准确。所以,ODS层的命中率应该适中,一般来说,在80%~90%左右是合理的。

当然,ODS层的命中率也受到很多因素的影响,比如ODS层的数据更新频率、ODS层的数据容量等。因此,具体的合理命中率还需要根据实际情况具体分析。

数仓价值链的体现和实现。

数仓价值链的体现主要是通过以下几个方面:

1、数据采集:数仓系统要能够从各种来源采集数据,包括传统数据库、网络日志、企业应用系统和第三方数据源等。

2、数据清洗:数据采集后,可能存在脏数据、缺失数据等情况,数仓系统要对数据进行清洗,使其符合分析的要求。

3、数据存储:将清洗后的数据存储到数仓系统中,以便后续的分析和查询。

4、数据分析:使用数仓系统中的数据进行分析,提供对决策者有价值的信息。

5、数据报告:将分析结果呈现给决策者,帮助他们做出决策。

建立数仓通常需要经过以下步骤

建立数据仓库通常要经过以下几个步骤:

1、需求分析:在建立数据仓库之前,需要先进行需求分析,确定数据仓库的目的和功能,并规划数据仓库的架构和设计。

2、数据清洗和整合:在建立数据仓库之前,需要对来源数据进行清洗和整合,以确保数据的准确性和完整性。

3、构建数据模型:根据数据仓库的需求和功能,构建数据仓库的逻辑数据模型。

4、建立物理数据模型:根据逻辑数据模型,建立物理数据模型,并根据需要设计数据仓库的存储结构。

5、数据加载:将来源数据加载到数据仓库中。

6、数据分析和报告:使用数据仓库中的数据进行分析和生成报告,为企业决策提供依据。

7、维护和优化:对数据仓库进行定期的维护和优化,以确保数据的准确性和完整性。

指标生命周期可以从哪几个方面来评估

指标从被创建到被废弃的整个过程。指标生命周期可以从以下几个方面来评估: 

  1. 创建时间: 指标被创建的时间点

  2. .更新频率:指标数据更新的频率,包括实时更新、每日更新、每周更新等

  3. .使用频率:指标被使用的频率,包括每日使用、每周使用、每月使用等。

  4. 使用场景:指标被使用的场景,包括决策支持、规划、监控等。

  5. .相关性: 指标与业务的相关性,即指标能否反映业务状态

  6. .准确性: 指标数据的准确性,即指标能否反映实际情况

  7. 可解释性: 指标数据的可解释性,即指标能否被正确理解和解释

  8. 可操作性: 指标能否被有效地操作,即指标数据能否被用于实际的决策或行动。

通过对指标生命周期的评估,可以帮助企业更好地管理和使用指标,提高指标的有效性和价值

数据治理在做什么

数据治理是一种指导和管理数据生命周期的框架和方法。这包括数据的收集、存储、处理、使用和保护。数据治理的目的是提高数据质量,并确保数据在组织内被合理使用。数据治理可以帮助组织有效地使用数据,并防止数据泄露或滥用。

做数仓的目的

数据仓库(Data Warehouse)是一种存储大量历史数据的系统,它主要用于数据分析和报告。数据仓库通常包含来自多个不同来源的数据,并使用ETL(提取,转换和加载)过程将数据转换为可以进行分析的形式。

数据仓库的目的是为管理层提供一个在线的数据分析工具,使他们能够快速获取有关公司业务的信息,并基于这些信息做出决策。数据仓库的建立是为了满足企业决策的需要,为企业的经营决策、规划决策、计划决策和控制决策提供依据,即为企业决策供给。

数据仓库是数据集成的基础,也是数据挖掘的前提。因此,建立数据仓库的目的不仅仅是为了供给决策,还包括为数据挖掘和数据分析提供基础。

--END--

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/200060.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python实现炫酷的屏幕保护程序

shigen日更文章的博客写手,擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长,分享认知,留住感动。 上次的文章如何实现一个下班倒计时程序的阅读量很高,觉得也很实用酷炫,下边是昨天的体验…

基于STC12C5A60S2系列1T 8051单片机的液晶显示器LCD1602显示两行常规字符应用

基于基于STC12C5A60S2系列1T 8051单片机的液晶显示器LCD1602显示两行常规字符应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍液晶显示器LCD1602简单介绍通过液晶显…

Java实现象棋算法

象棋算法包括搜索算法、评估函数和剪枝算法。以下是一个简单的实现: 搜索算法:使用极大极小值算法,即每个玩家都会做出最好的选择,考虑到对方也会做出最好的选择,所以需要搜索多层。 public int search(int depth, i…

(二)pytest自动化测试框架之添加测试用例步骤(@allure.step())

前言 在编写自动化测试用例的时候经常会遇到需要编写流程性测试用例的场景,一般流程性的测试用例的测试步骤比较多,我们在测试用例中添加详细的步骤会提高测试用例的可阅读性。 allure提供的装饰器allure.step()是allure测试报告框架非常有用的功能&am…

Linux下安装两个版本python

1 python下载: 官网地址:Download Python | Python.org 第一:点击下载如下图: 第二:找到对应的python版本源码包: 点击右键复制下载地址,如下图 例如我的是:https://www.python.org/…

Java(四)(多态,final,常量,抽象类,接口)

目录 多态 基本概念: 使用多态的好处 类型转换 遇到的问题 解决方法 强制类型转换的一个注意事项 final 常量 抽象类 啥是个抽象类? 抽象类的注意事项,特点 抽象类的场景和好处 抽象类的常见应用场景: 模板方法设计模式 接口 基本概念 接口的好处 JDK8开始,接…

太累了,是时候让AI数字人来帮我干活了(走,上教程)

阿酷TONY,原创文章,长沙,2023.11.21 关 键 词:AI数字人,生成式AI,智能数字分身适用场景:培训数字人,演讲授课数字人,直播带货数字人特别说明:教程用的是国内…

学习Rust适合写什么练手项目?【云驻共创】

Rust是一门备受关注的系统级编程语言,因其出色的内存安全性、高性能和并发性能而备受赞誉。对于那些希望学习和掌握Rust编程语言的人来说,练手项目是一个不可或缺的环节。通过实际动手完成项目,你可以加深对Rust语言特性和最佳实践的理解&…

如何修改百科内容?百度百科内容怎么修改?

百科词条创建上去是相当不易的,同时修改也是如此,一般情况下,百科词条是不需要修改的,但是很多时候企业或是人物在近期收获了更多成就或是有更多的变动,这个时候就需要补充维护词条了,如何修改百科内容&…

猫12分类:使用yolov5训练检测模型

前言: 在使用yolov5之前,尝试过到百度飞桨平台(小白不建议)、AutoDL平台(这个比较友好,经济实惠)训练模型。但还是没有本地训练模型来的舒服。因此远程了一台学校电脑来搭建自己的检测模型。配置…

C++引用

目录 一.概念 二. 引用特性 三. 常引用 四. 使用场景 1,做参数 2,做返回值 五. 传值,传引用效率比较 5.1 值和引用的作为参数的性能比较 5.2 值和引用的作为返回值类型的性能比较 六. 引用和指针的区别 一.概念 引用不是新定义一…

16位 (MCU) R7F101G6G3CSP、R7F101G6E3CSP、R7F101G6G2DSP、R7F101G6E2DSP是新一代RL78通用微控制器

产品描述 RL78/G24微控制器具有RL78系列MCU的最高处理性能,CPU工作频率高达48MHz,设有灵活的应用加速器 (FAA)。FAA是一款专门用于算法运算的协处理器,可以独立于CPU运行,提供更高处理能力。RL78/G24 MCU具有增强的模拟功能和大量…

构建和应用卡尔曼滤波器 (KF)--扩展卡尔曼滤波器 (EKF)

作为一名数据科学家,我们偶尔会遇到需要对趋势进行建模以预测未来值的情况。虽然人们倾向于关注基于统计或机器学习的算法,但我在这里提出一个不同的选择:卡尔曼滤波器(KF)。 1960 年代初期,Rudolf E. Kal…

LLM之Prompt(二):清华提出Prompt 对齐优化技术BPO

论文题目:《Black-Box Prompt Optimization: Aligning Large Language Models without Model Training》 论文链接:https://arxiv.org/abs/2311.04155 github地址:https://github.com/thu-coai/BPO BPO背景介绍 最近,大型语言模…

oepnpnp - 自己出图做开口扳手

文章目录 oepnpnp - 自己出图做开口扳手概述笔记做好的一套扳手实拍美图工程图END oepnpnp - 自己出图做开口扳手 概述 我的openpnp设备顶部相机安装支架, 由于结构限制, 螺柱的安装位置和机械挂壁的距离太近了. 导致拧紧(手工或者工具)很困难. 也不能重新做相机支架, 因为将…

Michael Jordan最新报告:去中心化机器学习中的契约、不确定性和激励

‍ ‍导读 11月3日,智源研究院学术顾问委员会委员、机器学习泰斗Michael Jordan在以“新一代人工智能前沿”为主题的2023北京论坛 新工科专题论坛上,发表了题为Contracts, Uncertainty, and Incentives in Decentralized Machine Learning(去…

深度学习之基于Pytorch的昆虫分类识别系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介系统架构技术亮点 二、功能三、系统四. 总结 一项目简介 # 深度学习基于 Pytorch 的昆虫分类识别系统介绍 深度学习在图像分类领域取得了显著的成就&#…

什么是强化学习

1.1 强化学习概述 强化学习(reinforcement learning,RL) 讨论的问题是智能体(agent)怎么在复杂、不确定的环境(environment)中最大化它能获得的奖励。如图 1.1 所示,强化学习由两部…

低代码服务商,中小型数字化软件服务商的新出路

数字化时代大背景下,企业信息化向数字化转型成为所有企业发展的必由之路,企业在对业务模式、流程、组织形式、信息技术等方面进行重新定义时,软件必然参与价值创造的全过程,这势必驱使软件成为推动数字化转型的“引擎”&#xff0…

Django 入门学习总结6 - 测试

1、介绍自动化测试 测试的主要工作是检查代码的运行情况。测试有全覆盖和部分覆盖。 自动测试表示测试工作由系统自动完成。 在大型系统中,有许多组件有很复杂的交互。一个小的变化可能会带来意想不到的后果 测试能发现问题,并以此解决问题。 测试驱…