Hive基础面试-如何理解复用率的

1. 模型的复用率你们是怎么做的?

 简单直白的说就是你的模型复用率如何,在业务方是否认可该模型,也是衡量模型建设的一个标准,复用率数:数仓模型涉及的核心是追求模型的复用和共享,引用系数越高,说明数仓的复用性越好

「用模型引用系数作为指标,衡量数据中台模型设计的复用度。引用系数越高,说明数仓的复用性越好。
模型引用系数:一个模型被读取,直接产出下游模型的平均数量」

  • 通过数据血缘图评估模型设计

借助元数据中心的数据血缘图,我们能够直观地评判数仓模型的设计优劣。一个欠佳的模型设计往往呈现出自下而上的单一线条状,这意味着数据的流向极为单一,缺乏应有的复用和共享。

与之相反,理想的模型设计应是交织的发散型结构。在这种结构下,一个模型能够被多个下游模型引用,从而形成复杂的网络关系。比如,一张 DWD 层表被多张 DWS 层表引用,这充分体现了数据的复用和共享。这样的设计能够让数据在不同的业务场景中得到充分利用,进而提高数据的价值。同时,当底层数据发生变化时,只需在少数关键节点进行调整,就可以影响到多个下游业务,大大降低了维护的工作量。

  • 以模型引用系数衡量复用度

复用度,我们引入了模型引用系数这一重要指标。模型引用系数指的是一个模型被读取后,直接产出下游模型的平均数量。

以 DWD 层表为例,如果一张 DWD 层表被 5 张 DWS 层表引用,那么这张 DWD 层表的引用系数就是 5。通过计算所有有下游表的 DWD 层表的引用系数的平均值,我们可以得到 DWD 层表平均模型引用系数。一般来说,这个系数低于 2 被认为比较差,而 3 以上则相对比较好,这是根据经验得出的判断标准

  •  DWD完善度与复用性的关系

DWD 层作为数据仓库的重要层次,其完善度对于整个数仓的性能和复用性至关重要。通常情况下,我们可以通过观察 ODS 层有多少表被 DWS/ADS/DM 层引用,来衡量 DWD 层是否完善

  • DWS/ADS/DM 层完善度对复用性的影响

DWS/ADS/DM 层的完善度主要考核汇总数据的完善程度。一般来说,我们主要看汇总数据能直接满足多少查询需求。如果汇总数据无法满足需求,使用数据的人就不得不使用明细数据甚至原始数据,这会增加查询的复杂性和成本

  • 完善度对数仓模型复用性的重要意义

完善度的数仓模型能够带来多方面的好处。首先,它可以提高数据的复用性,减少重复开发工作。通过在 DWD 层进行充分的数据处理和整合,上层的数据使用可以更加高效地复用已有的数据资产。其次,完善的汇总数据可以满足大部分查询需求,提高查询速度和降低成本。最后,完善度高的数仓模型能够更好地支持业务决策,提供准确、及时的数据支持

2. 数据去重的常见方法有哪些?

数据去重是提升数据质量的重要环节,常见的去重方法包括:

主键去重:为数据表设定唯一标识符作为主键,数据库层面自动阻止重复数据的插入。

哈希技术:利用哈希函数计算数据行的唯一哈希值,相同数据产生相同的哈希值,从而快速识别并移除重复项。

排序法:先对数据集进行排序,然后遍历数据,比较相邻记录,移除重复行。此方法适用于数据量不大或内存足够大的情况。

distinct查询:在SQL查询中使用DISTINCT关键字筛选出唯一的记录。

外部键关联:在关联表之间通过外键约束,确保从属记录的唯一性,间接实现去重。

数据清洗工具:利用专门的数据清洗软件或库(如Python的pandas库),内置去重功能简化操作。

指纹技术:对复杂数据结构(如文档、图像)使用内容指纹(如MD5、SHA)进行比较,识别重复内容。

3. 缓慢变化维的设计?

三种:直接覆盖,增加新行,增加心属性列

Type 1:覆盖:直接用新值代替旧值。

Type 2:增加新行。将当前行的状态设置为off,并设置一个endtime时间戳,将当前时间标记上。

同时新增1行,将其状态标记为on,设置begintime时间戳为上一个记录的endtime+1。

Type 3:增加新列:给表增加一个新列,来存储新值,同时保留原来的值不变。

4. 拉链表使用场景和实现方式?

拉链表使用场景:需要查看历史某一时间节点的状态,同时考虑到存储空间。

实现方式:

首先是拉链表dw_order_his的设置,有start_date和end_date两个字段;

其次在ods层创建一个ods_order_update表,储存当变化数据(包括insert和update的数据)

源表(order)

ods_order_update表和dw_order_his表的交集进行封链操作,end_date=current_date

ods_oder_update数据插入到his表中,对于记录的end_date=9999-12-31,start_date=current_date

5. 星型模型和雪花模型区别?

星形模型(Star Schema):

1.事实被维度所包围,且维度没有被新的表连接

2.星形模型是一个比较折中的的建模方式(BIAPPS中都是用的是星形的建模方式)

雪花模型(Snowflake Schema):

1.事实表被多个维表或一个或多个层次所包围

2.雪花模型一般在处理大的且相对静态的层次的时候使用

根据事实表和维度表的关系,又可将常见的模型分为星型模型和雪花型模型

  星形模型:当所有维度表连接到事实表上的时候,整个图就像一个星星,故称之为星型模型。星型架构是一种非正规化的结构,多维数据集的每一个维度都直接与事实表相连,不存在渐变维度,所以数据有一定冗余。因为有冗余,所以很多统计不需要做外部的关联查询,因此一般情况下效率比雪花模型高。

  雪花模型:当有多个维度表没有直接连接到事实表上,而是通过其他维度表连接到事实表上时,其图形就像雪花,故称雪花模型。雪花模型的优点是减少了数据冗余,所以一般情况下查询需要关联其他表。在冗余可接受的前提下使用星型模型。

星型模型和雪花模型的区别在于:维度表是直接连接到事实表还是其他维度表。

6. 你们公司的数仓分层,每一层是怎么处理数据的

数据仓库一般分为三层,自上而下分别为数据贴源层(ODS,Operation Data Store)、数据公共层(CDM,Common Data Model)和数据应用层(ADS,Application Data Service)。

逻辑分层架构

分层的好处

  • 清晰数据结构:每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。
  • 数据血缘追踪:简单来讲可以这样理解,我们最终给业务呈现的是一张能直接使用的张业务表,但是它的来源有很多,如果有一张来源表出问题了,我们希望能够快速准确地定位到问题,并清楚它的危害范围。
  • 减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。
  • 把复杂问题简单化:将一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。

7. 什么是事实表,什么是维表

事实表(Fact Table)是指存储有事实记录的表,如系统日志、销售记录等;事实表的记录在不断地动态增长,所以它的体积通常远大于其他表。

事实表作为数据仓库建模的核心,需要根据业务过程来设计,包含了引用的维度和业务过程有关的度量。

可加:最灵活最有用的事实是完全可加,可加性度量可以按照与事实表关联的任意维度汇总。比如消费总金额

半可加:半可加度量可以对某些维度汇总,但不能对所有维度汇总。差额是常见的半可加事实,除了时间维度外,他们可以跨所有维度进行操作。(比如每天的余额加起来毫无意义)

不可加:一些度量是完全不可加的,例如:比率。对非可加事实,一种好的方法是,分解为可加的组件来实现聚集

维度表(Dimension Table)或维表,有时也称查找表(Lookup Table),是与事实表相对应的一种表;它保存了维度的属性值,可以跟事实表做关联;相当于将事实表上经常重复出现的属性抽取、规范出来用一张表进行管理。常见的维度表有:日期表(存储与日期对应的周、月、季度等的属性)、地点表(包含国家、省/州、城市等属性)等。维度是维度建模的基础和灵魂,

使用维度表有诸多好处,具体如下:

  • 缩小了事实表的大小。
  • 便于维度的管理和维护,增加、删除和修改维度的属性,不必对事实表的大量记录进行改动。
  • 维度表可以为多个事实表重用,以减少重复工作。

下钻是商业用户分析数据的最基本的方法。下钻仅需要在查询上增加一个行头指针,新行的头指针是一个维度属性,附加了sql语言的group by表达式,属性可以来自任何与查询使用的事实表关联的维度,下钻不需要预先存在层次的定义,或者是下钻路径。

有时,维度除了主键外没有其他内容,例如,当某一发票包含多个数据项时,数据项事实行继承了发票的所有描述性维度外键,发票除了外键无其他项,但发票数量仍然是在此数据项级别的合法维度键。这种退化维度被放入事实表中,清楚的表明没有关联的维度表,退化维度常见于交易和累计快照事实表中

8. 了解onedata吗,说说你的理解

于前期缺少规划,随着集团业务发展,暴露的问题越来越多,给数据治理工作带来了很大的挑战,在数据仓库建设过程中,主要发现了以下几个问题:

  • 缺乏统一的标准,如:开发规范、指标口径等。
  • 缺乏统一数据质量监控,如:字段数据不完整和不准确,数据发散等。
  • 业务知识体系混乱,导致数据开发人员开发成本增加。
  • 数据架构不合理,层级之间分工不明显,数据流向混乱。
  • 缺失统一维度和指标管理。

二、目标

  • 基于公司现有的数据平台,完善数据体系架构、数据规范、模型标准和开发模式,从而驱动业务快速发展
  • 高人力成本、数据错误、浪费资源、杂乱无章、效率低下,这些经常出现的痛点,OneData都能轻松解决

1.核心思想

从设计,开发和使用上保障规范和统一,实现数据资产全链路管理,提供标准的数据输出,包含数据规范定义,数据模型设计规范,ETL规范

2.核心特点

3.策略

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

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

相关文章

eduSRC挖洞思路

声明 学习视频来自 B 站UP主泷羽sec,如涉及侵权马上删除文章。 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。 ✍🏻作者简介:致…

Banana Pi BPI-CanMV-K230D-Zero 采用嘉楠科技 K230D RISC-V芯片设计

概述 Banana Pi BPI-CanMV-K230D-Zero 采用嘉楠科技 K230D RISC-V芯片设计,探索 RISC-V Vector1.0 的前沿技术,选择嘉楠科技的 Canmv K230D Zero 开发板。这款创新的开发板是由嘉楠科技与香蕉派开源社区联合设计研发,搭载了先进的勘智 K230D 芯片。 K230…

昆山网站建设在移动互联网时代的作用

在当今的移动互联网时代,昆山网站建设的重要性愈加凸显。随着智能手机和移动设备的普及,用户获取信息和进行消费的方式发生了根本性的变革。企业在此背景下,必须重新审视自己的在线形象和运营策略,以适应这一变化带来的挑战和机遇…

接上一主题,C++14中如何设计类似于std::any,使集合在C++中与Python一样支持任意数据?

这篇文章的重点是C多态的应用,但是如果你是C新手, 你需要了解以下C知识: 类 构造函数 拷贝构造函数 虚拟函数 纯虚拟函数 析构函数 类的继承 运算符重写 模板类 模板参数 数组 数组的传递 指针与动态内存分配 Python: s …

SpringBoot3与JUnit5集成测试

你可以在 Spring Boot 3 中轻松设置和运行 JUnit 集成测试。合理使用 Spring 提供的注解和工具,可以确保测试的高效性和可靠性。以下是集成测试的步骤和示例: 1. 添加依赖 在 pom.xml 中添加 Spring Boot Starter Test 依赖,它包含 JUnit 5 …

5.STM32之通信接口《精讲》之USART通信---实验串口接收程序

根据上节,我们一已经完成了串口发送程序的代码,并且深入的解析探索了串口的原理,接下来,Whappy小编将带领大家进入串口接收程序的探索与实验,并将结合上一节串口发送一起来完成串口的发送和接收实验。 上来两张图 上图…

微服务即时通讯系统的实现(服务端)----(1)

目录 1. 项目介绍和服务器功能设计2. 基础工具安装3. gflags的安装与使用3.1 gflags的介绍3.2 gflags的安装3.3 gflags的认识3.4 gflags的使用 4. gtest的安装与使用4.1 gtest的介绍4.2 gtest的安装4.3 gtest的使用 5 Spdlog日志组件的安装与使用5.1 Spdlog的介绍5.2 Spdlog的安…

数字IC后端实现时钟树综合系列教程 | Clock Tree,Clock Skew Group之间的区别和联系

Q: Clock,Clock Tree和Skew Group有何区别?Innovus CCOPT引擎是如何使用这些的? Clock是时序约束SDC中的时钟定义点。 create_clock -name clk_osc -period $period_24m [get_ports xin_osc0_func] 时钟树综合(Clock Tree Synthesis)之前应…

tcpdump抓包 wireShark

TCPdump抓包工具介绍 TCPdump,全称dump the traffic on anetwork,是一个运行在linux平台可以根据使用者需求对网络上传输的数据包进行捕获的抓包工具。 tcpdump可以支持的功能: 1、在Linux平台将网络中传输的数据包全部捕获过来进行分析 2、支持网络层…

青少年编程等级考试C++一级,硬币反转问题

代码 #include<iostream>using namespace std;bool a[300];int main(){ int n,m; cin >> n >> m; for(int i 1;i < m;i) { for (int j 1;j < n;j) { if( j % i 0) { a[j] !a[j];…

【Qt流式布局改造支持任意位置插入和删除】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、源代码二、删除代码三、扩展总结 前言 最近在做一个需求需要流式布局&#xff0c;虽然官方example里有一个流式布局范例&#xff0c;但是不能满足我的需求…

“AI玩手机”原理揭秘:大模型驱动的移动端GUI智能体

作者&#xff5c;郭源 前言 在后LLM时代&#xff0c;随着大语言模型和多模态大模型技术的日益成熟&#xff0c;AI技术的实际应用及其社会价值愈发受到重视。AI智能体&#xff08;AI Agent&#xff09;技术通过集成行为规划、记忆存储、工具调用等机制&#xff0c;为大模型装上…

小R的二叉树探险 | 模拟

问题描述 在一个神奇的二叉树中&#xff0c;结构非常独特&#xff1a; 每层的节点值赋值方向是交替的&#xff0c;第一层从左到右&#xff0c;第二层从右到左&#xff0c;以此类推&#xff0c;且该二叉树有无穷多层。 小R对这个二叉树充满了好奇&#xff0c;她想知道&#xf…

Unity类银河战士恶魔城学习总结(P141 Finalising ToolTip优化UI显示)

【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili 教程源地址&#xff1a;https://www.udemy.com/course/2d-rpg-alexdev/ UI部分暂时完结&#xff01;&#xff01;&#xff01; 本章节优化了UI中物品描述的显示效果&#xff0c;技能描述的显示效果 并且可以批…

windows实现VNC连接ubuntu22.04服务器

最近弄了一个700块钱的mini主机&#xff0c;刷了ubuntu22.04系统&#xff0c;然后想要在笔记本上通过VNC连接&#xff0c;这样就有了一个linux的开发环境。最后实现的过程为&#xff1a; 安装vnc服务器 安装 VNC 服务器软件&#xff1a; sudo apt update sudo apt install t…

Perforce《2024游戏技术现状报告》Part3:生成式AI、版本控制、CI/CD等游戏技术的未来趋势与应用

游戏开发者一直处于创新前沿。他们的实践、工具和技术受到各行各业的广泛关注&#xff0c;正在改变着组织进行数字创作的方式。 近期&#xff0c;Perforce发布了《2024游戏技术现状报告》&#xff0c;通过收集来自游戏、媒体与娱乐、汽车和制造业等高增长行业的从业者、管理人…

初阶数据结构之队列的实现

1 队列的定义 什么是队列呢&#xff1f;队列只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作。队列具有先进先出FIFO(First In First Out)的特性。 队头&#xff1a;删除数据的一端称为队头。 队尾&#xff1a;插入数据的一端称为队尾。 2 队列底层结构…

阿里云私服地址

1.解压apache-maven-3.6.1-bin 2.配置本地仓库&#xff1a;修改conf/dettings.xml中的<localReoisitory>为一个指定目录。56行 <localRepository>D:\apache-maven-3.6.1-bin\apache-maven-3.6.1\mvn_repo</localRepository> 3.配置阿里云私服&#xff1a;…

小狐狸AI数字人分身声音克隆形象克隆口播口型同步SAAS系统源码

AI数字人软件系统的未来趋势和用途正朝着多模态交互和智能化方向发展。 1. **多模态交互**&#xff1a;AI数字人技术正在从单一的文本或语音交互&#xff0c;转变为更加自然的多模态交互方式&#xff0c;包括语言对话、行为互动和自主学习能力。这种技术的提升使得数字人能够更…

Idea忽略提交文件、Idea设置文件隐藏、Idea提交时隐藏部分文件、git提交时忽略文件

文章目录 一、在idea中commit文件时隐藏文件方式一&#xff1a;创建.gitignore文件&#xff08;推荐&#xff09;方式二&#xff1a;‌通过File Types设置隐藏文件方式三&#xff1a;通过Git配置忽略文件‌&#xff08;不推荐&#xff09;总结 二、可能遇到的问题2.1、.gitigno…