• 数据仓库面试题


    一、ODS、DWD、DWS、ADS划分与职责

    1. 数据仓库中的ODS、DWD、DWS、ADS分别代表以下层次,并各自承担不同的职责:
    2. --ODS(Operational Data Store):
    3. 名称:贴源层
    4. 主要职责:作为数据仓库的第一层,ODS层主要用来接收和存储数据源系统中的数据,同时保证数据的准确性和完整性。ODS层的数据与源系统数据基本保持一致,主要用于简化后续数据加工处理的工作。
    5. 数据粒度:细粒度
    6. 表类型:通常包括两类,一个用于存储当前需要加载的数据,一个用于存储处理完后的历史数据。
    7. --DWD(Data Warehouse Detail):
    8. 名称:数据明细层
    9. 主要职责:DWD层是数据处理的核心层,其主要任务是对ODS层中的数据进行清洗、加工、集成、聚合等操作,构建出符合业务需求的数据模型。这一层会对数据进行必要的规范化处理,解决数据的重复、缺失、异常等问题,同时对数据进行标准化和统一化处理。
    10. 数据处理方法:包括空值处理、验证数据有效性、规范数据格式、统一数据标准、数据转码、业务规则清洗等。
    11. DIM(Dimension):
    12. 名称:维度层
    13. 主要职责:DIM层包含了一个或多个维度表,这些维度表描述了数据仓库中的各个维度。例如,在销售数据仓库中,可能包含时间维度表、产品维度表、客户维度表等。
    14. --DWS(Data Warehouse Service):
    15. 名称:数据汇总层
    16. 主要职责:DWS层是面向业务应用的数据访问层,主要用于提供数据接口和数据服务。它可以提供各种类型的服务,如数据查询、统计、报表、分析等,同时可以通过ETL操作等方式对数据进行加工和处理,为用户提供实时数据服务。
    17. 数据处理:包括维度上卷、指标汇总、指标合并等,主要作用是满足共性需求,解决口径不一致、开发任务多等问题,通过宽表化处理提高分析效率。
    18. ADS(Analytics Data Store):
    19. 名称:数据应用层
    20. 主要职责:ADS层主要是为决策分析层提供数据支持,主要用于存储汇总计算结果和预处理的数据。它主要关注数据的可视化和查询性能,同时还需要具备快速响应的能力,为业务决策提供及时支持。
    21. 表类型:通常包括各类报表、查询、仪表盘等。

    二、事实表有哪些类型?

    1. --1、事务事实表
    2. 事务事实表也称原子事实表,描述业务过程,跟踪控件或时间上某点的度量事件,保存的是最原子的数据,适用于跟踪单个业务事件或事务,如订单、交易等。
    3. --2、周期事实表
    4. 以一个周期为时间间隔来记录事实,通常的周期可以是每天、每周、每月、每年等,它只关注某个业务过程在某个时间点的状态,例如订单收货的状态,数据会按照订单收货的时间来切分。
    5. --3、累积快照事实表
    6. 用来描述过程开始和结束之间的关键步骤事件,覆盖过程的整个生命周期,适用于那些需要跟踪业务过程从开始到结束所有状态变化的场景,如订单从创建到完成的整个过程

    三、数仓中数据模型(数仓中维度与事实之间的模型有那些?)

    1. --1、星型模型
    2. 由一个事实表和多个维度表组成,维度表围绕事实表,每个维度表都通过一个或多个键与事实表相连
    3. --2、雪花模型
    4. 雪花模型是星型模型的一个扩展,其中维度表可能进一步规范化,形成多个相关的维度表
    5. --3、星座模型
    6. 星座模型是多个星型模型或雪花模型的集合,共享某些维度表。

    四、 为什么要设计数据分层?

    1. 1、方便对表的定位:每一个数据分层都有它的作用域和职责,在使用表的时候能更方便地定位和理解
    2. 2、减少重复开发:一些通用的中间层数据,能够减少重复计算
    3. 3、统一数据口径:通过数据分层,提供统一的数据出口,统一对外输出的数据口径
    4. 4、复杂问题简单化:将一个复杂的任务分解成多个步骤来完成,每一层解决特定的问题

    五、事实表设计流程

    1. --1、选择业务
    2. 通常一个业务过程对应一张事实表
    3. --2、声明粒度
    4. 定义每张事实表的每行数据表示什么,并尽可能选择最细粒度,以应对各种细节程度的需求
    5. --3、确定维度
    6. 完成粒度声明以后,也就意味着确定了主键,可以确定与每张事实表相关的维度,选择能够清楚描述业务过程的维度信息,如卖家、买家、商品、时间等。
    7. --4、确定事实
    8. 事实是与业务过程有关的度量值,事实通常是数值型的度量值,如销售额、订单数量、点击次数等,事实有可加性、半可加性、非可加性三种类型,需要将不可加性事实分解为可加的组件。
    9. --5、冗余维度
    10. 通过将部分维度属性退化到事实表中,可以减少下游用户关联多个表的操作,提高查询效率

    六、如何判断事实与维度

    1. --事实(Fact)
    2. 度量性质:事实通常是数值型的度量值,如销售额、订单数量、点击次数等。这些度量值可以通过数学计算进行汇总和比较。
    3. 业务过程:事实通常与特定的业务过程相关联,例如订单处理、购买行为、网站访问等。每个业务过程都可以产生一个或多个事实。
    4. 粒度:事实的粒度是指事实表中的一行数据所代表的业务细节层次。例如,在销售事实表中,粒度可以是每条销售记录(详细粒度)或每日的销售总额(汇总粒度)。
    5. 可加性:事实通常具有可加性,意味着可以将多个事实值相加以获取更高层次的总计值。例如,可以将多个订单的销售额相加得到总销售额。
    6. --维度(Dimension)
    7. 描述性质:维度用于描述业务过程中的上下文信息,如时间、地点、产品、客户等。维度通常是非数值型的,用于提供对事实的详细描述和分类。
    8. 层次结构:维度通常具有层次结构,例如时间维度可以包含年、季度、月、日等层次。这些层次结构有助于用户从不同的角度分析和理解数据。
    9. 属性:维度由多个属性组成,这些属性描述了维度的不同方面。例如,客户维度可能包含客户ID、客户姓名、客户地址、客户类型等属性。
    10. 稳定性:与事实相比,维度数据通常更稳定,不会频繁变化。维度的属性通常用于过滤和分组事实数据,以便进行更深入的分析。

  • 相关阅读:
    这些Java面试题,有点虐人!
    生活中的光伏
    数据预处理与特征工程
    .NET -- 使用Dump文件分析异常
    How to Name a Compound
    写给 Java 程序员的前端 Promise 教程
    政安晨:【深度学习神经网络基础】(十三)—— 卷积神经网络
    SPREAD.NET for windows 16.2.20231.0 Crack
    mysql数据库之必备知识
    JAXB 使用记录 bean转xml xml转bean 数组 继承 CDATA(转义问题)
  • 原文地址:https://blog.csdn.net/weixin_52134189/article/details/140048878