数据分层:打造数据资产管家

一、引言

随着企业数据规模的增长,数据的价值变得越来越重要。然而,传统的数据库在承载大量数据时面临挑战,需要高效有序的维护。因此,建立高效的数据仓库成为了企业决策和管理的基石,但现代技术的背景下,数据管理和保护仍然存在着重要挑战。

为了解决这些挑战,数据分层成为了数仓建设中不可或缺的步骤之一。通过对数据的分层整理,不同的数据可以被合理地分类,方便企业快速进行数据分析和决策。

在实际应用中,数据分层需要进行灵活而有效的规划和设计,并结合相关的技术和工具进行管理和监控。只有这样,企业才能提高决策和管理的效率,增强市场竞争力。

二、了解数据分层

什么是数据分层

数据分层是一种管理海量数据的方法。因为数据通常会包括许多不同的来源,而这些来源往往也会以不同的方式存储和处理数据。这就是为什么需要使用数据分层。通过将数据分级存储、加工和管理,可以更好地维护数据一致性、数据安全和数据复用。

数据分层前后对比

为什么需要使用数据分层

如果把数据看作图书馆里的书,我们希望看到它们在书架上分门别类地放置;如果把数据看作城市的建筑,我们希望城市规划布局合理;如果把数据看作电脑文件和文件夹,我们希望按照自己的习惯有很好的文件夹组织方式,而不是糟糕混乱的桌面,经常为找一个文件而不知所措。

简单来说,数据分层是将现实世界中收集到的有效信息,按照其特点和用途进行分类和组织,从而更加合理地表现数据的价值。数据分层解决了数据管理中的各种挑战和问题,并满足了以下几个方面的需求:

数据量和质量------提高数据管理效率和准确性

  • 随着企业数据不断增长,数据量庞大且多样化,数据质量也面临挑战。

  • 数据分层可以对不同的数据类别进行基本的数据清洗和整理,从而提高数据的质量和可信度。

  • 常见的数据类别包括:

  • 数值型数据(如销售额、成本等)

  • 文本型数据(如文件、文档等)

  • 图像型数据

  • 视频型数据

  • 音频型数据

数据来源和结构------促进数据集成和共享

  • 不同数据源和系统中的数据结构和格式差异巨大,使得数据之间无法直接进行比较和集成。

  • 数据分层通过对不同的数据类别进行转换、整合和标准化,以实现数据的一致性和互操作性。

  • 常见的数据类别包括:

  • 结构化数据(如关系型数据库中的表格数据)

  • 半结构化数据(如JSON、XML等非严格格式化数据)

  • 非结构化数据(如文本、日志等无固定格式的数据)

数据定位和权限控制------加强数据安全和合规性

  • 随着多个部门和用户共享数据的需求增加,需要确保数据的定位清晰且能够进行精确的权限控制。

  • 数据分层可以明确每个数据类别的归属和访问权限,保障数据的安全性和隐私保护。

  • 常见的数据类别包括:

  • 个人身份数据(如个人身份证号码、手机号码等)

  • 机密数据(如公司财务数据、合同等)

  • 敏感数据(如用户的健康状况、信用卡信息等)

数据处理流程和效率------增强数据价值和应用

  • 数据处理过程中不合理的流程和冗余操作可能导致数据的重复和浪费。

  • 数据分层可以建立规范和优化的数据处理流程,以提高数据处理的效率和准确性。

  • 常见的数据类别包括:

  • 处理过程中生成的临时数据

  • 派生数据(如计算指标和数据挖掘结果)

  • 集成数据(如数据仓库中的整合数据)

数据归档和压缩------降低数据管理和使用成本

  • 通过对数据进行归档和压缩,可以减少存储空间的占用。

  • 根据数据的使用频率和价值,将不常访问的数据归档到较廉价但仍可靠的存储介质中,从而释放出更多高速和高成本存储设备的存储空间。

  • 常见的数据类别包括:

  • 历史数据(如过去几年的销售订单数据)

  • 备份数据(如系统的数据库备份)

  • 归档数据(如长期存储的审计日志)

三、数据分层的逻辑

数据有哪些分层

了解了数据分层的一些优势,大家可能就有疑问了。我们如何进行数据分层呢?大概需要分几层呢?

其实这个问题需要根据实际的业务状况以及需要处理的数据体量来进行划分,介绍分层之前,咱们先来了解下会有哪些分层,每层的作用和目的是啥。

如何进行数据分层

下面以一个互联网在线学习平台为例:

如果想要从学生、教师和课程等不同维度进行深入的数据分析和挖掘,则单一的数据源无法满足这一需求,必须进行数据分层,将数据按照不同的层次进行清洗和整合,并与不同维度的数据进行连接和关联。如果不进行数据分层的处理,数据的管理和维护将变得非常困难,同时也会导致数据的准确性和可靠性受到影响。

此外,如果各个业务之间的数据交互和处理没有进行优化和规划,数据处理在不同业务之间的流转和传递就会变得十分复杂,这对平台的运营效率和效果产生不良影响。同时无法为用户提供更好的个性化服务,因为个性化服务需要对用户的属性、偏好和需求进行深入的了解和分析。

因此,数据分层处理对于在线学习平台的优化是十分必要的:

从这个案例可以分析出,通过数据分层设计带来如下价值:

  • 更准确的数据收集和管理:通过ODS层的操作数据层,平台可以对学生和教师的注册信息、学习行为数据进行更准确地收集和管理,保证数据的真实可靠性。
  • 更深入的数据分析:借助DWD层的数据仓库明细层,平台可以深入分析学生的学习行为,如观看视频的时长、做题的次数等。同时,通过课程维度表的建立,也可对课程信息进行更详尽的分析。
  • 更全面的数据汇总:在DWS层的数据仓库汇总层中,平台可以对学生的学习行为和成绩情况进行详细汇总、分析和展示,同时可以综合考虑课程信息,制作出更详尽的报告。这样做可以方便平台进行更全面的数据分析和统计,也可为教师和学生提供更有效的反馈和建议。
  • 更灵活的数据维护:在DIM层的维度数据层中,平台可以对学生、教师和课程等属性信息进行维护和管理,方便后续数据分析和应用。同时,这些维度表也可以根据实际需求不断调整和扩展,增强平台的数据分析和应用能力。
  • 更精准的数据应用:在ADS层的应用数据层中,平台可以根据学生和教师的数据情况,进行更精准的教学评估、学习进度分析和课程推荐等功能。这样,平台可以为教师和学生提供更精准、个性化的服务,提高用户体验和平台价值。

数据分层的优势

由上述案例可见,数据仓库的分层设计具有诸多价值,能够提升数据管理效率、简化复杂问题处理、提高数据复用能力,并为平台提供规范化的数据管理和分析支持:

  • 提供方便使用的数据结构: 通过规范化的数据分层设计,使得学生、教师和课程等不同维度的数据能够被清晰地定位和理解,方便使用方进行数据分析和挖掘。
  • 追溯数据源头:分层后的数据血缘关系清晰明确,能够快速准确地追踪数据的来源,帮助用户了解数据的可靠性和可信度。
  • 提高数据的维护效率:通过数据分层的规范化设计,可以减少数据开发的工作量,节约计算和存储资源的使用,同时方便维护人员进行数据管理和维护操作。
  • 简化复杂问题的处理:将复杂的业务问题划分为多个步骤,并在每一层只处理单一的步骤,有助于提高问题的可控性和可理解性。当数据出现问题时,只需要修复有问题的部分,而不需要对所有数据进行修复。
  • 提升数据的复用能力:通过规范化的数据分层设计,可以开发一些通用的中间层数据,减少重复计算,提高业务表的使用率,从而提升系统的执行效率。
  • 减少业务变化的影响:由于业务可能会经常变化,通过数据分层设计,无需每次业务变化都重新接入数据,降低了对业务的影响和改动的成本。
  • 统一数据指标口径:通过数据分层设计,提供统一的数据出口和对外输出的数据指标口径,保证数据的一致性和统一性,为平台提供规范化的数据管理和分析支持。

四、得物数据分层的案例介绍

背景

为了帮助公司了解员工对公司目标、文化、薪酬福利、职业发展、工作环境等方面的满意度和需求,有助于识别问题、改善环境、增加团队凝聚力,从而提高员工的工作效率和工作满意度。得物每年会进行两次全司的员工满意度调研,从中挖掘出有价值的指标,以便更好地了解员工需求并制定相应的改进计划。

数据分析痛点

员工满意度数据分析中,存在以下痛点需注意:

  • 业务逻辑复杂:为维护员工隐私,指标的计算需要满足填答人数必须大于3才能出统计数据。这一规则的设计,增加了数据处理的难度,提高数据出错的风险。
  • 复杂的统计维度和指标:统计维度多样化,包括性别、年龄、司龄、岗位、职级等等,这也给数据的处理和分析增加了难度。
  • 业务变更频繁:员工满意度调查问卷在不同周期会增加、删除、变更题目。这也增加了数据处理和维护的难度和工作量。

设计数据分层

为了解决上述痛点和需求,我们决定设计数据分层。通过将数据划分为不同层次,将数据处理、分析和服务化的流程分解成多个独立部分,从而最大限度地提高数据分析处理的效率和安全性。

数据分层不仅实现了数据的可视化维护和服务化,还为数据加工、应用和管理提供了更加清晰和规范化的指导方针,从而助力业务的发展和优化。

操作数据存储层ODS

ODS层的设计目标是捕获和保存原始数据,以便后续的数据清洗、整合和转换。在这一层,数据通常以源系统的格式保存,保留了数据的完整性和粒度,并提供了适当的数据结构和字段以支持后续的转换处理。

明细数据层DWD

DWD层的设计目标是提供清洗、结构化和可查询的明细数据,以满足企业不同业务需求和分析要求。在DWD层,数据已经经过了一系列的清洗和转换过程,包括校验、敏感数据加密、去重、标准化、格式化和结构调整等,以确保数据的准确性、完整性和一致性。

汇总数据层DWS

DWD层的数据分散且过于细节化,难以支持更高层次的分析和决策。此时就需要使用DWS层对DWD层的数据进行汇总和聚合,以得到更高层次的数据信息。从而提供大量的元数据、预先计算的指标和快速数据查询等功能。

DWS层的数据通常具有更高的抽象层次,可以根据不同的业务需要进行不同的聚合方式,比如按照性别、年龄、司龄等粒度提供满意度指标1,满意度指标2等汇总指标。

维度层DIM

DIM层可以看作是用来对数据进行分类、分组和筛选的"标签"。它通常是一些描述性的属性或特征,对数据进行了翻译和转换。

例如,对于系统满意度事实表,可以将维度层分为系统安全、系统性能、系统体验、系统稳定性等属性信息,这些属性可以对满意度调研数据进行分类、分组和筛选,帮助系统负责人更好地优化产品和服务。

数据应用层ADS

ADS是数据仓库中最接近用户和应用系统的一层,也是企业数据分析和应用的重要来源和基础。它的主要作用是将数据仓库中的数据用于企业的业务运营、决策分析、客户服务等方面,为用户和应用系统提供便利的数据访问和操作接口。

在设计和实施数据应用层ADS时,需要考虑以下因素:

  • 数据质量:数据应用层的数据质量直接影响企业的业务应用效果和决策分析结果。因此,在实施数据应用层时需要严格控制数据质量,保证数据的准确性、完整性和一致性。
  • 安全性:数据在应用层的使用涉及到企业的核心业务和敏感数据,因此,在设计和实施数据应用层时需要考虑数据安全的问题,采取一定的安全措施和技术手段,例如数据加密、权限控制等,确保数据安全和保密。
  • 可维护性:数据应用层是企业应用的基础,其稳定性和可维护性对企业长期发展至关重要。因此,在实施和应用数据应用层时需要考虑系统的可靠性、可扩展性和可维护性,例如数据备份、故障恢复、日志记录等。

总结

在这个案例中,我们遇到了许多困难,如数据权限限制、业务逻辑复杂、统计维度多样、业务变更频繁等,这些困难给数据的处理和分析带来了很大的难度和不便。

由于数据的分析是一个复杂的过程,可以采用数据分层的方法来解决这些问题。数据分层将数据处理、分析和服务化的流程分解成多个独立部分,从而最大限度地提高数据分析处理的效率和安全性。通过将数据划分为不同层次,数据分层实现了数据的可视化维护和服务化,为数据加工、应用和管理提供了更加清晰和规范化的指导方针,从而助力业务的发展和优化。

五、写在末尾

数据分层带来的一些问题

虽然数据分层设计带来了许多优点和价值,但也存在一些缺点。其中,主要包括以下几点:

  • 复杂性增加:数据分层设计的实现需要付出一定的设计与维护成本,需要建立与维护多个层级,有时出现数据结构紊乱、重复等问题可能会使得整个数据分层变得更加复杂。
  • 数据冗余:因为数据分层设计需要建立多个层级,可能会引入一定的数据冗余问题,导致数据冗余或重复使用。
  • 需要专业的技术人员:由于数据分层设计需要大量的技术编程和数据建模知识,需要专业的技术人员进行开发和维护。这会给公司带来额外的专业技术成本和困难。
  • 数据仓库容量问题:随着数据分层设计的层数增加,数据仓库的大小和存储容量也会相应增加,可能会带来一定的存储管理问题。

因此,在实际数据仓库建设中,合理利用数据分层来组织、管理和分析数据是非常重要的。数据分层需要根据实际情况和企业需求来调整。

思考

数据分层在数仓建设中扮演了一个不可或缺的角色。通过按照一定的规则和标准,重新组织和归纳数据,数据分层可以提高数据利用率,加强数据管理,进一步帮助企业开展科学化、精细化的运营管理和决策分析。

随着数据分析技术的进一步发展,数据分层也必将不断优化和完善。从数据分析工具的不断升级,到人工智能和机器学习技术的应用,数据分层必将成为企业数据管理和决策分析的头号利器。因此,作为企业管理者和数据分析师,必须时刻关注数据分层技术的发展趋势和变化,及时调整和优化自己的数据分层管理方案,保证企业数据管理和决策分析的高效性和准确性。

*文/Neel

本文属得物技术原创,更多精彩文章请看:得物技术官网

未经得物技术许可严禁转载,否则依法追究法律责任!

相关推荐
Shepherd06191 小时前
【Jenkins实战】Windows安装服务启动失败
运维·jenkins
丶21361 小时前
【WEB】深入理解 CORS(跨域资源共享):原理、配置与常见问题
前端·架构·web
Biomamba生信基地2 小时前
Linux也有百度云喔~
linux·运维·服务器·百度云
new_abc2 小时前
Ubuntu 22.04 ftp搭建
linux·运维·ubuntu
鹿鸣天涯3 小时前
‌华为交换机在Spine-Leaf架构中的使用场景
运维·服务器·网络
CodingBrother3 小时前
软考之面向服务架构SOA-通信方法
架构
小白也有IT梦3 小时前
域名绑定服务器小白教程
运维·nginx
有梦想的咕噜3 小时前
Secure Shell(SSH) 是一种网络协议
运维·网络协议·ssh
dntktop3 小时前
免费,WPS Office教育考试专用版
运维
苹果醋33 小时前
C语言 strlen 函数 - C语言零基础入门教程
java·运维·spring boot·mysql·nginx