查看原文
其他

智能数据时代:如何优化数仓模型的复用性

涤生-宇哥 涤生大数据
2024-12-05

在数仓岗位面试中,相信很多同学都频繁被问到“模型复用性”相关面试题。这个也是很多企业数仓建设中非常关注的问题,因为在企业数仓建设中数仓模型的复用性,更是有着多方面的关键意义。 

1. 数仓模型复用性的价值

 

1.1 提高开发效率

在互联网金融信贷数仓建设中,面临着快速变化的业务需求和海量的数据处理任务。如果数仓模型的复用性低,每次新的业务需求出现时,开发人员都需要从头开始构建数据处理流程和模型,这将耗费大量的时间和精力。例如,当推出新的信贷产品时,若没有可复用的模型,开发人员需要重新设计从数据采集、清洗到存储和分析的整个流程。而提升数仓模型的复用性后,开发人员可以直接利用已有的模型,只需进行少量的调整和扩展,就能满足新的业务需求。这样可以大大缩短开发周期,提高开发效率,使金融机构能够更快地响应市场变化。

1.2 降低维护成本

互联网金融信贷业务的数据量庞大且不断增长,数据仓库需要持续进行维护和更新。如果数仓模型复用性差,每个独立开发的模型都需要单独维护,这将增加维护的难度和成本。例如,当底层数据结构发生变化时,如果多个模型是独立开发的,那么每个受影响的模型都需要进行修改,这不仅工作量大,还容易出现错误。而高复用性的数仓模型,由于其具有统一的设计标准和规范,当底层数据变化时,只需要在少数关键的复用模块进行调整,就可以影响到多个相关的业务流程,从而降低了维护成本。 

1.3 保证数据一致性

在互联网金融信贷公司中,数据的准确性和一致性至关重要。如果数仓模型复用性低,不同的业务部门可能会各自开发独立的数据处理模型,这容易导致数据不一致的问题。例如,不同部门对客户信息的处理方式不同,可能会导致客户的信用评分在不同的分析报告中出现差异。而提升数仓模型的复用性,可以确保数据在不同的业务场景中经过相同的处理流程和规则,从而保证数据的一致性。例如,一个通用的客户维度模型可以被多个业务部门复用,无论在信贷审批、风险评估还是营销分析中,客户的基本信息和信用数据都能保持一致。 

1.4 促进业务创新

再往大一点说,高复用性的数仓模型为业务创新提供了坚实的基础。开发人员可以快速利用已有的数据模型和工具,尝试新的数据分析方法和业务模式。例如,利用可复用的风险评估模型,结合新的数据源和算法,快速开发出更精准的风险预测模型,为金融机构推出新的信贷产品或优化风险管理提供支持。

2. 数仓模型复用度

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

借助元数据中心的数据血缘图,我们能够直观地评判数仓模型的设计优劣。一个欠佳的模型设计往往呈现出自下而上的单一线条状,这意味着数据的流向极为单一,缺乏应有的复用和共享。例如,在这样的设计中,底层数据表可能仅仅服务于特定的上层表,无法被其他业务模块所利用。如此一来,便会导致数据开发过程中的重复劳动。一旦底层数据发生变化,就需要对多个独立的上层处理流程进行修改,这无疑增加了维护的难度和成本。

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

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

为了更加具体地衡量数据中台模型设计的复用度,我们引入了模型引用系数这一重要指标。模型引用系数指的是一个模型被读取后,直接产出下游模型的平均数量。

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

当数仓的模型引用系数较高时,意味着数据的复用性良好。在这种情况下,开发人员在进行新的业务开发时,可以充分利用已有的数据模型,从而减少重复开发的工作量。同时,高复用度还有助于提高数据的一致性和准确性,因为相同的数据模型在不同的业务场景中得到了多次验证和使用。 

3. DWD完善度与复用性的关系


DWD 层作为数据仓库的重要层次,其完善度对于整个数仓的性能和复用性至关重要。通常情况下,我们可以通过观察 ODS 层有多少表被 DWS/ADS/DM 层引用,来衡量 DWD 层是否完善。如果 DWD 以上的层大量引用 ODS 层的表,那就表明很多任务是直接基于原始数据进行深度聚合计算,而明细数据没有得到充分的积累和复用。在这种情况下,数据清洗、格式化、集成等工作可能存在重复开发的问题,这不仅浪费了资源,还降低了开发效率。

为了更准确地衡量 DWD 层的完善度,我们引入了跨层引用率指标。跨层引用率是指 ODS 层直接被 DWS/ADS/DM 层引用的表,占所有 ODS 层活跃表的比例。一般来说,跨层引用率越低越好。在数据中台模型设计规范中,明确要求不允许出现跨层引用,即 ODS 层数据只能被 DWD 引用。这样可以确保数据在 DWD 层进行充分的清洗、转换和整合,为上层的数据使用提供稳定、可靠的基础。

例如,在金融业务的数据仓库中,如果大量的报表和分析任务直接从 ODS 层获取数据进行计算,就会导致数据处理效率低下,且容易出现数据不一致的问题。而如果 DWD 层建设完善,这些任务就可以基于 DWD 层的明细数据进行高效的聚合和分析,从而提高数据的复用性和一致性。

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

 

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

可以用汇总数据查询比例来衡量 DWS/ADS/DM 层的完善度。汇总数据查询比例是指 DWS/ADS/DM 层的查询占所有查询的比例。需要明确的是,这个比例不可能做到 100%,但值越高,说明上层的数据建设越完善。对于使用数据的人来说,查询速度会更快,成本会更低,使用起来也会更顺畅。

例如,在电商业务的数据仓库中,如果汇总数据能够满足大部分的销售分析和用户行为分析需求,那么数据使用者就可以快速获取所需信息,而无需深入到明细数据中进行复杂的查询。这不仅提高了工作效率,还降低了对计算资源的消耗。

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

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

总之,在提高数仓模型复用性的过程中,完善度是一个不可忽视的重要指标。通过衡量 DWD 层的跨层引用率和 DWS/ADS/DM 层的汇总数据查询比例,可以有效地评估数仓模型在覆盖业务查询场景和数据建设方面的完善程度,为进一步优化和改进数仓提供有力的依据。

涤生大数据往期精彩推荐

1.企业数仓DQC数据质量管理实践篇

2.企业数据治理实战总结--数仓面试必备

3.OneData理论案例实战—企业级数仓业务过程

4.中大厂数仓模型规范与度量指标有哪些?

5.手把手教你搭建用户画像系统(入门篇上)

6.手把手教你搭建用户画像系统(入门篇下)

7.SQL优化之诊断篇:快速定位生产性能问题实践

8.SQL之优化篇:一文搞懂如何优化线上任务性能,增效降本!

9.新能源趋势下一个简单的数仓项目,助力理解数仓模型

10.基于FlinkSQL +Hbase在O2O场景营销域实时数仓的实践

11.开发实战角度:distinct实现原理及具体优化总结

12.涤生大数据实战:基于Flink+ODPS历史累计计算项目分析与优化(一)

13.涤生大数据实战:基于Flink+ODPS历史累计计算项目分析与优化(二)

14.5分钟了解实时车联网,车联网(IoV)OLAP 解决方案是怎样的?

15.企业级Apache Kafka集群策略:Kakfa最佳实践总结

16.玩转Spark小文件合并与文件读写提交机制

17.一文详解Spark内存模型原理,面试轻松搞定

18.大厂8年老司机漫谈数仓架构

19.一文带你深入吃透Spark的窗口函数

20.大数据实战:基于Flink+ODPS进行最近N天实时标签构建

21.数仓面试高频-如何在Hive中实现拉链表

22.数仓面试还不懂什么是基线管理?

23.传说中的热点值打散之代码怎么写? 

24.列转行经典实现,细谈hive中的爆炸函数

25.玩转大厂金融风控体系建设

26.实际开发中:如何有效运用Spark Catalyst的执行流程

27.Doris企业架构选型总结:存算分离与一体化的对比与应用场景分析

28.详解用户画像的标签体系

 

继续滑动看下一个
涤生大数据
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存