首页 > 其他分享 >大数据面试题之数仓(2)

大数据面试题之数仓(2)

时间:2024-07-03 19:30:04浏览次数:20  
标签:面试题 数据仓库 业务 一致性 之数 维度 数据 事实

目录

维度表和事实表的区别? 

什么是ER模型? 

OLAP、OLTP解释(区别)三范式是什么,举些例子 

维度设计过程,事实设计过程 

维度设计中有整合和拆分,有哪些方法,并详细说明 

事实表设计分几种,每一种都是如何在业务中使用 

单事务事实表、多事务事实表区别与作用 

说下一致性维度、一致性事实、总线矩阵 

从ODS层到DW层的ETL,做了哪些工作? 

数据仓库与(传统)数据库的区别? 

数据质量是怎么保证的,有哪些方法保证 

怎么衡量数仓的数据质量,有哪些指标 

增量表、全量表和拉链表 


维度表和事实表的区别? 

维度表和事实表是数据仓库设计中的两个核心概念,它们在数据仓库架构中扮演着不同的角色,服务于不同的目的。以下是它们的主要区别:

维度表(Dimension Table)

  1. 描述性属性:维度表包含用于描述数据上下文的信息,比如时间、地点、产品、客户等。这些信息帮助分析人员从多个角度(维度)理解数据。
  2. 宽而浅:维度表通常有很多列(属性),但行数相对较少。例如,一个时间维度表可能包含年、月、日、星期等列,但是相对于事实表,其行数是有限的。
  3. 高冗余:为了便于查询和提高效率,维度表中可能存在一定的数据冗余。例如,产品名称可能会在多个行中重复出现,以确保每个相关的事实记录都能直接关联到完整的维度信息。
  4. 缓慢变化维:维度表还处理缓慢变化维度的问题,即随着时间推移,维度属性可能会发生变化,需要设计策略来管理这种变化,如类型1(直接覆盖)、类型2(增加新行记录变化)或类型3(添加额外列存储历史状态)。

事实表(Fact Table)

  1. 度量值:事实表存储的是业务事件的量化度量,比如销售额、访问次数、订单数量等。这些度量值是分析的主要对象。
  2. 长而深:与维度表相反,事实表通常有较少的列(主要是度量值和外键),但行数非常多,随着业务活动的增长而快速增长。
  3. 关联维度:事实表通过外键与维度表关联,每个事实记录都关联到一个或多个维度,这样就可以从不同维度分析度量值。
  4. 粒度:事实表的设计粒度(记录级别的细节程度)是非常关键的,可以是交易级、日志级、汇总级等,决定了可以进行分析的详细程度和效率。

总结
维度表为分析提供视角和背景信息,事实表则记录了实际发生的业务活动和度量。两者相结合,通过星型或雪花型模式连接,形成了数据仓库的基础,使得用户能够快速高效地对大量数据进行多维度分析和报告生成。在数据仓库的设计和实施过程中,明确区分和合理设计这两类表是至关重要的。

什么是ER模型? 

ER模型,全称为实体-关系模型(Entity-Relationship Model),是一种概念数据模型,广泛应用于数据库设计中,用以描述现实世界中的数据结构。ER模型由Peter Chen于1976年提出,它提供了一种不受任何特定数据库管理系统(DBMS)约束的、面向用户的表达方法,使得设计人员和非技术用户能够有效地沟通和理解数据需求。

ER模型的核心组成部分包括:

1、实体(Entity):实体代表现实世界中可区分的事物或概念,比如人、地点、事件或对象。在数据库中,实体通常转化为表格的形式。
2、属性(Attribute):属性是描述实体特征的具体细节,例如,一个人实体可能有姓名、年龄、地址等属性。
3、联系(Relationship):联系表示实体之间的关联方式,它可以是一对一、一对多或多对多的关系。例如,一个学生(实体)可以注册多个课程(实体),而一门课程也可以被多个学生注册,这就表示了一种多对多的联系。
ER模型通过实体-联系图(E-R Diagram)来视觉化表示这些概念,图中使用矩形表示实体,椭圆或菱形表示属性,而菱形则用来表示实体间的联系类型,并用连线将它们连接起来,标明关系的名称和 cardinality(基数),比如“一个学生参加多个课程”。

ER模型在数据库设计的早期阶段,即概念设计阶段,发挥着关键作用。它帮助设计者理解并记录数据需求,随后这些需求会被转换为逻辑数据模型(如关系模型),进一步细化为物理数据模型,最终实现为具体的数据库结构。由于其直观且易于理解的特点,ER模型成为了数据库设计和开发过程中不可或缺的工具。

OLAP、OLTP解释(区别)三范式是什么,举些例子 

OLAP(联机分析处理)和OLTP(联机事务处理)是数据库和数据处理领域的两种主要应用场景,它们有着不同的设计目标和应用场景。

OLAP(联机分析处理)
 1) 目标:OLAP系统主要用于支持复杂的分析查询,如趋势分析、数据挖掘、报表生成等,帮助决策者进行业务洞察和战略规划。
 2) 特点:

  • 查询复杂,涉及大量数据的聚合、分组和钻取操作。
  • 数据更新频率低,通常数据是定期加载或更新。
  • 使用星型或雪花型模型,数据通常是去范式化的,以优化查询性能。
  • 面向市场和决策支持,提供历史数据的多维度视图。

OLTP(联机事务处理)
 1) 目标:OLTP系统专注于处理日常业务操作,如订单处理、账户转账、库存管理等,保证数据的即时性和准确性。
 2) 特点:

  • 高并发,处理简单而频繁的事务,如增删改查操作。
  • 需要高度的事务一致性、隔离性和持久性(ACID属性)。
  • 数据库设计遵循范式化原则,如第一范式(1NF)、第二范式(2NF)、第三范式(3NF),以减少数据冗余和提高数据完整性。
  • 实时性要求高,对响应时间敏感。

三范式(以第三范式为例)
数据库设计的三范式是为了减少数据冗余、提高数据的一致性和完整性。第三范式(3NF)要求:

  • 满足第二范式(2NF),即非主属性完全依赖于任何一个候选键。
  • 非主属性之间相互独立,没有传递依赖。也就是说,如果非主属性A依赖于非主属性B,而B又依赖于主键,那么这种依赖关系需要消除。

例子
OLAP例子

  • 一个零售公司的数据仓库用于分析去年各季度不同地区的销售情况,包括按产品类别、时间序列的销售额分析,以及促销活动对销量的影响等。

OLTP例子

  • 在线购物平台的订单系统,处理用户的商品选购、支付、订单确认等即时交易操作,确保每笔交易的准确无误,并实时更新库存信息。

第三范式(3NF)例子
假设有一个订单管理系统的数据库,其中包含订单表(Order)、产品表(Product)和客户表(Customer)。

  • 订单表(Order)有订单ID(主键)、客户ID(外键)、产品ID(外键)和数量等字段。这里,订单ID直接关联订单详情,而客户ID和产品ID分别指向客户表和产品表,避免了在订单表中直接存储客户和产品的详细信息,减少了数据冗余,符合3NF的要求。如果订单表还包含了一个字段记录客户的地址,但由于地址信息实际上是由客户ID确定的(地址依赖于客户,客户再依赖于订单ID),这将违反3NF,因为出现了传递依赖。正确的做法是在客户表中存储地址信息。

维度设计过程,事实设计过程 

维度设计中有整合和拆分,有哪些方法,并详细说明 

维度设计中的整合和拆分是构建高效数据仓库的关键策略,旨在优化查询性能、简化数据管理并适应复杂的业务分析需求。以下是一些常用的整合与拆分方法:

维度整合
1、层次化整合:

  • 将具有层次关系的维度属性组织在一起,如地理位置维度可以整合国家、州/省、城市等层次。这种整合有利于在不同层级上进行数据聚合和深入分析。

2、一致性维度:

  • 在不同事实表之间共享相同的维度表,确保跨业务领域的数据一致性。例如,客户维度表可能被销售、服务和营销等多个事实表引用,以维持客户信息的一致性。

3、多值维度处理:

  • 当一个事实记录与多个维度值相关联时,可以采用桥接表或数组等形式整合这些多值关系,确保数据的完整性。

维度拆分
水平拆分

  • 原则:根据维度的不同分类属性或类型进行拆分,解决特定维度属性差异较大或业务关联程度不同的问题。
  • 依据:维度的属性差异情况和业务关联程度指导拆分决策。
  • 应用:例如,将大型客户维度表按行业或地区拆分为多个小表,以减小单表体积,提升查询效率。

垂直拆分
 目的:将大而复杂的维度表分解为多个小表,以提高查询性能和管理的便捷性。
方法:

  • 主从维度:将稳定、产出时间早、使用频繁的属性放在主维表中,而变化快、产出时间较晚、使用频率较低的属性放在从维表中。
  • 扩展性考虑:通过垂直拆分,可以更容易地扩展表结构,适应未来变化的业务需求。

维度变化的解决方案(缓慢变化维)
缓慢变化维:处理维度属性随时间变化的情况,如客户地址变更。

  • 类型1:直接覆盖旧值。
  • 类型2:为每个变化点创建新的行记录,保留历史版本。
  • 类型3:在维度表中增加额外列存储历史状态。

快照维表:定期保存维度的完整快照,适用于需要保留历史记录的场景。
极限存储和微型维度:针对特殊场景的优化策略,前者处理极端大的维度表,后者处理非常小且变化频繁的维度。
这些方法的运用需要根据具体的数据仓库规模、查询需求、性能要求和维护成本综合考虑,灵活选择和应用。

事实表设计分几种,每一种都是如何在业务中使用 

事实表设计主要分为三种类型:事务事实表(Transaction Fact Table)、周期快照事实表(Periodic Snapshot Fact Table)和累积快照事实表(Accumulating Snapshot Fact Table)。每种类型在业务中的使用方式如下:

一、事务事实表(Transaction Fact Table)
1. 定义与特点

  • 也称为原子事实表,描述业务过程,跟踪控件或时间上某点的度量事件,保存的是最原子的数据。
  • 类似MySQL的binlog日志,每次相关的change都会记录下来,生成一行新的数据。

2. 业务使用

  • 记录业务细节:事务事实表用于详细记录每个业务事务的详细信息,如订单的下单、支付、发货等。
  • 支持实时分析:由于记录了最原子的数据,事务事实表支持对业务过程的实时分析和跟踪。
  • 复杂事件分析:对于需要分析复杂业务过程(如用户行为路径)的场景,事务事实表提供了丰富的数据基础。

二、周期快照事实表(Periodic Snapshot Fact Table)
1. 定义与特点

  • 以一个周期为时间间隔来记录事实,周期可以是每天、每周、每月、每年等。
  • 主要记录某个时间段内一些聚集事实值或状态度量。

2. 业务使用

  • 周期性数据分析:周期快照事实表适用于分析具有周期性特征的数据,如每日销售额、每周库存量等。
  • 趋势分析:通过对比不同周期的数据,可以分析业务趋势,如销售额的月度变化趋势。
  • 性能评估:在评估系统或业务性能时,周期快照事实表提供了关键的时间点数据支持。

三、累积快照事实表(Accumulating Snapshot Fact Table)
1. 定义与特点

  • 用来描述过程开始和结束之间的关键步骤事件,覆盖过程的整个生命周期。
  • 通常具有多个日期字段来记录关键时间点,并随着过程的变化而更新记录。

2. 业务使用

  • 过程分析:累积快照事实表特别适用于分析业务过程的各个阶段,如订单从下单到支付的整个流程。
  • 时间间隔计算:通过记录每个关键步骤的时间点,可以方便地计算不同业务过程之间的时间间隔,如订单处理时间、物流配送时间等。
  • 全量数据保存:累积快照事实表还常用于保存全量数据,为数据探查、统计分析、数据挖掘等提供全面的数据支持。

总结
事实表设计的三种类型各有特点,在业务中的使用方式也各不相同。事务事实表适用于详细记录业务事务的详细信息;周期快照事实表适用于分析具有周期性特征的数据;累积快照事实表则特别适用于分析业务过程的各个阶段和时间间隔。在实际应用中,可以根据业务需求和数据特点选择合适的事实表类型进行设计。

单事务事实表、多事务事实表区别与作用 

单事务事实表和多事务事实表是数据仓库中维度建模的两种不同策略,它们主要在数据范围、复杂性、应用场景以及设计和维护要求上有所区别:

单事务事实表
 1) 数据范围:专注于单一类型的事件或业务过程,如订单、点击流记录或库存变动等。每个业务过程对应一个独立的事实表,专门记录该过程中的度量信息。
 2) 复杂性:相比多事务事实表,设计和维护较为简单,因为它们集中于单一业务领域,维度和度量的关联更为直接和明确。
 3) 应用场景:适用于需要深入分析特定业务活动细节的场景,比如详细分析订单处理过程中的各种指标。
 4) 作用:提供高度详细的业务过程数据视图,支持高度针对性的查询和报告需求,便于追踪和理解单个业务流程的绩效。
多事务事实表
 1) 数据范围:整合了多种类型的事件或业务过程在同一张事实表中,涵盖了多个相关但可能不同的业务活动。
 2) 复杂性:设计更为复杂,需要仔细规划如何统一不同业务过程的度量和维度,以避免数据冗余和保持数据一致性。
 3) 应用场景:适用于需要跨业务领域进行综合分析的场景,如分析某段时间内所有销售相关活动的整体表现,包括订单、退货、优惠使用等。
 4) 作用:为用户提供一个跨业务过程的全局视图,便于进行高层次的汇总分析和趋势发现,支持更广泛的业务决策需求。
选择依据
选择单事务还是多事务事实表主要取决于业务需求、数据分析的目标、数据的可用性以及下游用户的具体使用情况。如果业务过程之间度量和维度相似且分析需求经常涉及跨过程的综合视图,多事务事实表可能是更好的选择。反之,如果需要深度分析单一业务过程的细节,单事务事实表则能提供更精细的数据支持。此外,设计时还需考虑数据冗余、查询性能、维护成本等因素。

说下一致性维度、一致性事实、总线矩阵 

在数据仓库和商业智能领域,"一致性维度"、"一致性事实"和"总线矩阵"是构建和维护企业级数据仓库的重要概念,它们有助于确保数据的一致性和可复用性,促进数据集成和标准化。以下是这三个概念的详细说明:

一致性维度
定义:一致性维度是指在整个数据仓库体系中,对于相同业务实体的描述采用统一的维度表和维度模型。这意味着无论哪个数据集市或哪个业务领域的事实表引用某个维度(如时间、产品、客户等),都使用同一个维度表作为参照,保证了维度属性的定义、层次结构和数据质量的一致性。

优点:

  • 减少数据冗余和不一致性。
  • 提高数据查询和分析的准确性和可靠性。
  • 简化维护工作,当维度信息发生变化时,只需在一个地方更新即可。

一致性事实
定义:一致性事实是指在不同业务过程中,对于相同度量的计算规则和单位保持一致。例如,无论是在销售、库存还是财务模块中,关于收入的计算方式应该保持统一,这样在进行跨业务领域的汇总分析时,数据才具有可比性和准确性。

优点:

  • 确保跨部门、跨业务线的报告和分析结果具有可比性。
  • 支持更深层次的业务洞察,避免因计算标准不一导致的误解。
  • 便于数据治理,降低因度量定义不清晰带来的问题。

总线矩阵
定义:总线矩阵是数据仓库架构中的一个设计工具,用来规划和展示数据仓库中各个主题域(如产品、销售、客户等)、维度和事实表之间的关系。它以表格形式呈现,行表示源系统或数据主题,列表示数据仓库中的维度和事实,交点处则表明数据流动的方向和关系。

作用:

  • 规划数据集成:帮助设计者理解数据来源、如何转换以及如何加载到数据仓库中的具体位置。
  • 管理依赖关系:清晰展示不同数据实体间的依赖,便于识别和解决数据集成中的冲突。
  • 促进沟通:作为一个共同的语言,总线矩阵帮助项目团队成员、业务用户和技术团队之间有效沟通数据模型和数据流的设计思路。

综上所述,一致性维度和一致性事实确保了数据仓库中数据的一致性和可比性,而总线矩阵则是实现这一目标的规划和管理工具,三者共同支撑起数据仓库的架构设计和数据治理。

从ODS层到DW层的ETL,做了哪些工作? 

从ODS(Operational Data Store,操作数据存储)层到DW(Data Warehouse,数据仓库)层的ETL(Extract-Transform-Load,抽取-转换-加载)过程,是数据仓库建设中的核心步骤之一,旨在将业务系统中的原始数据转化为适合分析用途的结构化数据。具体来说,这一过程包括以下几个关键步骤:

1、抽取(Extract):

  • 数据源识别:确定需要从哪些业务系统或数据源中抽取数据,这些数据源可能包括数据库、文件系统、API接口等。
  • 数据提取:编写脚本或使用ETL工具,按照预定的计划或触发机制,从源系统中提取所需的数据。这可能涉及到SQL查询、API调用或文件读取操作。

2、转换(Transform):

  • 数据清洗:去除数据中的错误、重复记录、缺失值或异常值,确保数据质量。
  • 数据转换:将数据格式标准化或规范化,如日期格式转换、数值单位统一、字符串处理等。
  • 数据映射:将源系统的数据字段映射到数据仓库的维度和事实表结构中。
  • 数据聚合与分割:根据业务需求,可能需要对数据进行聚合(如按时间段汇总销售数据)或分割(如将一条记录拆分成多条以适应星型模式)。
  • 缓慢变化维度处理:处理维度表中的数据变化,如类型1、类型2或类型3的缓慢变化维度处理方法。

3、加载(Load):

  • 目标表准备:在数据仓库的DWD(Data Warehouse Detail,数据仓库明细层)或更高级别的DWS(Data Warehouse Summary,数据仓库汇总层)中准备目标表。
  • 数据加载:将转换后的数据加载到数据仓库的目标表中。这可能包括全量加载、增量加载或更新加载策略。
  • 数据验证:加载后进行数据质量检查,确保数据正确无误地加载到目标表中。

4、监控与调度:

  • ETL作业管理:设置定时任务或事件驱动的作业执行计划,确保ETL流程按时执行。
  • 日志记录与错误处理:记录ETL过程中的日志信息,对发生的错误进行及时处理和告警。

通过上述步骤,ETL过程将原始的、零散的业务数据转化为在数据仓库中结构化、易于分析的数据形式,为后续的商务智能分析、数据挖掘等提供了坚实的基础。

数据仓库与(传统)数据库的区别? 

数据仓库与传统的数据库(通常指的是面向事务处理的数据库,如OLTP系统)之间存在一些根本性的区别,主要体现在设计目的、数据处理、数据结构、查询需求和性能优化等方面。以下是几个关键区别:

1、设计目的:

  • 传统数据库:主要设计用于日常的事务处理,如记录销售交易、用户登录、库存更新等操作,强调数据的即时插入、更新和删除,确保数据的一致性和事务的完整性。
  • 数据仓库:旨在支持复杂的分析和报表生成,侧重于历史数据的存储和分析,帮助决策者通过多维度分析数据,了解市场趋势、业务表现等。

2、数据内容与结构:

  • 传统数据库:存储在线的、最新的业务数据,遵循数据库设计范式,尽量减少数据冗余,以优化事务处理速度。
  • 数据仓库:存储大量的历史数据,常通过数据整合从多个源系统中抽取数据,设计时可能会有意引入冗余(反范式设计),以提高查询效率和适应分析需求。

3、数据处理:

  • 传统数据库:侧重于快速处理单个交易或查询,关注实时响应。
  • 数据仓库:侧重于批量处理和复杂查询,如汇总、分组、联接等操作,通常不支持实时更新,而是通过定期的数据加载和刷新来维护数据集。

4、查询模式:

  • 传统数据库:面对的是短而频繁的事务性查询。
  • 数据仓库:支持复杂的分析查询,可能涉及大数据量的扫描和聚合,查询频率相对较低但数据量大。

5、性能优化:

  • 传统数据库:优化点在于提高单个事务的处理速度,减少锁争用,保证并发处理能力。
  • 数据仓库:优化方向在于提高数据读取和分析的速度,通常采用分区、索引、数据压缩等技术来提升大规模数据集的查询效率。

6、数据时效性:

  • 传统数据库:数据通常是实时或接近实时的。
  • 数据仓库:数据更新周期较长,可能每天、每周或按需更新,强调数据的完整性而非实时性。

综上所述,数据仓库与传统数据库在设计理念、数据处理方式、数据结构和查询需求上都有明显的区别,各自服务于不同的业务场景和分析需求。

数据质量是怎么保证的,有哪些方法保证 

数据质量的保证是一个系统性和持续性的过程,它涉及多个环节和方法。以下是一些主要的方法和步骤,用于确保数据质量:

一、明确数据质量标准
首先,需要明确数据质量的衡量标准。这通常包括数据的准确性、完整性、一致性、可靠性、有效性等方面。确保所有相关人员对数据质量的标准有清晰的认识,以便在后续的数据处理和管理过程中有明确的指导。

二、建立数据管理制度
制定一套完善的数据管理制度,包括数据采集、存储、处理、分析和使用的规范。这些规范应明确数据的来源、采集方法、存储格式、处理流程、分析方法和使用权限等,以确保数据在整个生命周期内都受到有效管理。

三、数据清洗与验证
对数据进行定期清洗,去除重复、错误、无效的数据。同时,对数据进行验证,确保数据的准确性和一致性。可以使用自动化工具或算法来辅助完成这些任务,以提高效率和准确性。

四、加强数据采集与整合
确保数据采集的准确性和完整性,从源头上提高数据质量。在数据采集过程中,遵循统一的标准和流程,避免数据歧义和错误。此外,还需要加强数据整合,确保不同来源的数据能够无缝对接,避免出现数据孤岛和数据不一致的问题。

五、设置数据质量标准
数据质量管理的第一步是建立一套质量标准。这包括定义数据约束,如数据类型约束、范围限制、强制性约束、唯一性约束等,以从数据收集过程中过滤掉“脏数据”。这些标准有助于在数据收集的一开始就保持数据质量。

六、实施数据监控与预警
建立数据质量监控体系,实时关注数据质量的变化。设置预警机制,当数据质量出现异常时,及时发出警报并采取相应的措施。这有助于及时发现并解决问题,防止数据质量问题对业务造成不良影响。

七、定期自查评估及数据质量考核
参考业界评估标准,对数据质量进行定期自查评估。评估可以从字段级别、跨字段级别、表级别、跨表级别等维度进行。同时,建立数据质量考核机制,将数据质量纳入部门和个人的绩效考核体系中,以激励相关人员积极提高数据质量。

八、开展大数据测试
数据质量管理离不开大数据测试工作。通过日常大数据测试工作的流程规范、痛点问题及解决方案的积累、方法与经验的总结以及专项Topic方面的投入(如测试工具、平台的开发及应用等),可以提高大数据测试工作的质量,进而提升数据质量。

九、数据库设计与规范化
通过设计适当的数据库结构,建立关系约束和数据规范化,确保数据的完整性和一致性。这包括合理设计表结构、定义主键和外键、建立索引等,以提高数据的查询效率和准确性。

十、数据审计和监控
定期审计和监控数据,以发现潜在的数据质量问题并及时处理。这包括对数据的完整性、准确性、一致性等方面进行审计和监控,确保数据质量符合业务要求。

十一、数据备份和恢复
定期备份数据,并确保可以快速、可靠地恢复数据,以防止数据损坏或丢失。这有助于保障数据的可靠性和安全性,避免因数据丢失而对业务造成不良影响。

十二、数据安全
使用安全措施保护数据免受未经授权的访问、篡改或破坏。这包括加强网络安全、设置访问权限、加密敏感数据等,以确保数据的安全性和机密性。

综上所述,保证数据质量是一个多环节、多方法的过程。通过明确数据质量标准、建立数据管理制度、加强数据采集与整合、设置数据质量标准、实施数据监控与预警、定期自查评估及数据质量考核、开展大数据测试、数据库设计与规范化、数据审计和监控、数据备份和恢复以及数据安全等措施的综合运用,可以有效提高数据质量,为企业的业务决策提供有力支持。

怎么衡量数仓的数据质量,有哪些指标 

衡量数据仓库的数据质量通常涉及多个维度,确保数据的准确性、完整性、一致性、时效性和可访问性。以下是几个关键的数据质量指标:

1、正确性(Accuracy):

  • 指数据的准确无误,可以通过明细数据对比、维度交叉验证、实时与离线数据对比等方法来检验。
  • 数据清洗和数据质量控制(DQC)工具可以用来实施唯一性验证、范围检查、格式验证等,以确保数据的正确性。

2、完整性(Completeness):

  • 衡量数据集中是否存在应该有的数据记录,没有遗漏。这包括检查数据字段的填充情况,确保没有大量空值或缺失值。
  • 可以通过监控数据导入过程的记录计数、检查数据条目是否符合预期的全集等方法来评估。

3、一致性(Consistency):

  • 确保数据在不同时间点、不同系统或同一系统的不同部分之间保持逻辑上的一致。这涉及到数据格式、编码规则、业务规则的一致应用。
  • 通过比较不同来源或版本的数据,实施一致性规则检验来保障。

4、时效性(Timeliness):

  • 数据应当在业务需要时可用,衡量数据从产生到可访问的时间间隔。
  • 包括数据加载延迟、数据处理时间等,实时数仓中尤其重要,会监控数据接入延迟等指标。

5、一致性(Conformity):

  • 数据遵循预定义的规范、标准和数据模型,确保数据定义和计算逻辑的一致性。
  • 需要检查数据是否遵守企业数据字典和业务规则。

6、可访问性(Accessibility):

  • 数据应易于被授权用户访问和理解,包括数据的组织、索引和查询性能。
  • 监控查询响应时间和用户满意度可以间接反映数据的可访问性。

7、合理性(Validity):

  • 数据值是否合理,符合业务逻辑,例如,年龄字段不应出现负数或异常高的数值。

8、唯一性(Uniqueness):

  • 确保没有重复记录,特别是在关键标识符上。

9、可追溯性(Traceability):

  • 数据应能追踪到其来源,便于审计和问题排查。

10、数据源数量与质量:

  • 对于实时数仓,数据源的数量和质量直接影响数据仓库的效能,包括数据接入速率、数据接入成功率和数据接入延迟等。

综合运用这些指标,并结合具体的业务场景和需求,可以全面评估和改善数据仓库的数据质量。

增量表、全量表和拉链表 

增量表、全量表和拉链表是数据仓库和数据处理领域中常见的数据表设计模式,它们各有特点,适用于不同的业务场景和分析需求:

1、增量表(Incremental Table)
定义:增量表仅存储自上次数据更新以来发生的数据变化,包括新记录的添加、现有记录的更新或删除信息。
特点:

  • 节省存储空间,因为仅存储差异数据。
  • 适合频繁更新的数据环境,能够高效处理数据变化。
  • 通常用于定期更新数据仓库,如每日加载前一天的数据变化。

应用场景:适合用于日志记录、实时数据流处理或需要频繁进行增量加载的场景。
2、全量表(Full Load Table)
定义:全量表包含某个实体或业务过程的完整数据集合,不区分数据是否已发生过变化,每次加载都是完整的数据集。
特点:

  • 存储所有数据,不考虑数据的变更历史,提供最新状态的完整记录。
  • 相对占用较多存储空间。
  • 简单易用,适用于数据变化不频繁或对历史数据完整性的要求不高场景。

应用场景:适合数据变化不频繁或对实时性要求不高的报告和分析,以及数据恢复或备份需求。
3、拉链表(Slowly Changing Dimension Table)
定义:拉链表是一种特殊的设计模式,用于处理缓慢变化维度,即随着时间推移逐渐变化的数据属性。它通过保留历史记录的方式,存储数据项随时间变化的多个版本。
特点:

  • 能够记录数据的历史状态,适用于需要分析数据随时间演变的情况。
  • 有不同类型(类型1至类型3)处理变化的方式,每种类型有不同的存储策略,如直接更新、增加新列记录变化或行复制。
  • 会占用更多存储空间。

引用:https://www.nowcoder.com/discuss/353159520220291072

通义千问、文心一言

标签:面试题,数据仓库,业务,一致性,之数,维度,数据,事实
From: https://blog.csdn.net/k7gxn56/article/details/140158968

相关文章

  • [学习笔记] 动态开点权值线段树合并 - 数据结构
    权值线段树例题【模板】普通平衡树#include<bits/stdc++.h>usingnamespacestd;constintN=1e5+1;intn,val[N],opt[N],num[N],cnt,len,san[N],m[N],rnk[N];unordered_map<int,int>dfn;structWeightedSegmentTree{ #definels(id<<1) #define......
  • SQLServer数据库批量kill会话的脚本(慎用!)
    微软大佬提供的一个批量kill会话的脚本,很凶很暴力,慎用慎用慎用!尤其是涉及大事务时。請注意:如果資料庫還在正在Recovery階段無效,因為無法Kill系統Session,必須等候Recovery完畢(或是重建交易紀錄檔案)。/*Function:KillallSPIDonspecificdatabaseandRepairWri......
  • Python预测体重变化:决策树、tf神经网络、随机森林、梯度提升树、线性回归可视化分析吸
    全文链接:https://tecdat.cn/?p=36648原文出处:拓端数据部落公众号在当今的数据驱动时代,机器学习算法已成为解析复杂数据集、揭示隐藏模式及预测未来趋势的重要工具。特别是在医疗健康领域,这些算法的应用极大地提升了我们对疾病预防、诊断及治疗方案的理解与制定能力。本文旨在通......
  • 约束:对于数据的限制
    主键约束主键约束:唯一约束+非空约束,该字段上的数据不能重复且不能为null注意:一张表必须有且只有一个主键添加主键约束--方式一(推荐)CREATETABLEuser(usernameVARCHAR(32)PRIMARYKEY,passwordVARCHAR(32),nick_nameVARCHAR(32),nameVAR......
  • 24位PCM采样数据和16位相互转换算法实例解析
    一概念1.24bit音频:24bit指使用3个字节记录振幅值,意味可以记录16,777,216种声音振幅的变化,动态范围可达144dB(人耳听觉的动态范围是120dB,超过120dB人耳会痛,所以120dB又称痛阀)。下面是三种常见的音频采样比对表: 2.24位一般是采样深度的概念,还有一......
  • 数据流图
    数据流图数据流图表示数据的流动,可以有多层,每层逐步细化,通过对顶层的加工进行分解可以得到下一层的图,直到无法分解得到底层图。基本元素外部实体矩形加工用圆矩或者圆表示,用圆矩容易填写文字描述好看,用圆容易区分加工和外部实体,软考的出题一般都是圆矩数据存储开口矩形或......
  • Oracle PL / SQL数据类型
    PL/SQL是SQL的过程语言扩展,它支持与SQL对数据库相同的数据类型。PL/SQL可以处理任何数据库数据类型,并且还有自己的数据类型。VARCHAR2:我们将使用数据类型VARCHAR2处理PL/SQL中的字符串。PL/SQLVARCHAR2最多可容纳32,767个字符。NUMBER:我们将使用数据类型NUMBER处......
  • Neo4j图数据库操作
    Neo4j图数据库操作文章目录Neo4j图数据库操作1批量添加节点、关系1.1直接使用`UNWIND`批量创建关系1.2使用CSV文件批量创建关系1.3选择方法2索引2.1创建单一属性索引2.2创建组合属性索引2.3创建全文索引2.4列出所有索引2.5删除索引2.6注意事项3清空所......
  • Oracle数据库统计信息收集
    Oracle数据库统计信息收集重新收集表统计信息--重新收集表统计信息BEGINDBMS_STATS.GATHER_TABLE_STATS(OWNNAME=>'ORCL',TABNAME=>'XXX',ESTIMATE_PERCENT=>100,DEGREE=>4);END;重新收集列统计信息......
  • 数据万象盲水印 - AIGC的“保护伞”
    导语近期AIGC的爆火让人们觉得AI似乎无所不能,打工人们已然将AI发展成了工作的一大助手,但同样也伴随着很多AI的受害者。一些专家、画家、学者们发现自己的“作品风格”正在被AI“抄袭剽窃”。传统水印的痛点在当今的数字时代,图片被广泛应用于各种场景,包括广告、社交媒体、电......