通过维度数据建模的最佳实践方法实现数据架构现代化
几十年来,维度数据建模一直是有效数据仓库设计的基础。 Kimball 的方法保证了优化的查询性能和简化的结构,易于企业各个级别的利益相关者理解。 请继续阅读,了解我们的自动化方法如何帮助您实现此架构,以在数据仓库中实现最大效率。
要构建真正的现代分析架构来支持机器学习、预测分析、预测和数据可视化等先进技术,您需要在数据仓库中实现维度数据建模。 BI 系统需要满足一些复选标记才能获得资格。
首先,它必须能够收集和处理来自不同交易源的大量数据。 其次,它应该处理当前和历史记录。 第三,它应该支持一系列复杂的、不断变化的查询操作。 最后,它需要为您的最终用户生成最新的相关数据。
满足这些期望的关键在于数据建模的设计阶段。 您在此处做出的决策将直接影响数据仓库的敏捷性、性能和可扩展性。
但为什么要进行维度数据建模呢?

经典的星型模式
假设您选择 3NF 模式,它通过规范化最大限度地减少数据冗余。 表存储的数量将大幅增加。 这意味着针对 3NF 模式运行的任何查询都将涉及大量复杂的联接。
通过对比, 维度建模 技术提供了一种简化的、非规范化的结构,可以产生更少的连接,从而提高查询性能。 维度数据模型还支持 缓慢变化的数据 和日期/时间特定维度,这两者都有助于历史分析。 这种模式更容易被最终用户理解,允许他们使用通用语言与开发团队协作。 因此,围绕实际业务流程构建数据仓库并发展数据模型以涵盖企业不断变化的需求变得更加容易。
让我们看一下一些关键因素,这些因素将使维度模型成为数据仓库开发的关键驱动力。
注意谷物

为您的事实表找到合适的谷物至关重要(提示:小麦不起作用)
为事实表行找到合适的谷物至关重要(提示:小麦不起作用)
通常,您需要为整个企业的不同运营领域构建单独的维度模型。 每个过程都有一个明确的粒度; 这是数据存储在事实表和相关维度中的详细级别。 在维度数据模型中保持一致的粒度至关重要,以确保消费阶段的最佳性能和可用性。 否则,您可能会得到错误计算的报告和分析。
举一个很好的例子,假设您正在为销售流程设计一个维度数据模型。 您有两种不同的数据记录源,一种是按每笔交易跟踪国内发票,另一种是跟踪每月在全球生成的订单。 一张表更适合以后对数据进行切片和切块,而后者本质上提供了销售流程的摘要视图,这仅对高级报告和商业智能有用。
一般来说,当数据涉及不同的业务流程时,您可以假设需要构建多个模型。 因此,您需要能够根据源系统中识别的实体关系准确地设计这些模式。 事实和维度表应以适当的详细程度正确分配。
通过移动到 工艺 允许您自动执行初始模式建模,您可以确保这些基本概念正确应用于您的模式。 从那里,您可以努力将其塑造得更符合您的 BI 要求。 更重要的是,您可以轻松更新模型以反映源系统或最终用户需求的更改,然后在数据管道中传播这些更改,而无需进行大量的手动返工。
正确使用方法的另一个关键细节是确保维度建模方法包含日期维度表。 这些表提供各种类型的特定于日期的测量,例如每日、每月、每年、财政季度或公共假期。 最终,这将帮助最终用户在消费阶段更有效地过滤和分组数据。
自动处理缓慢变化的数据

这些历史记录可以派上用场(https://xkcd.com/2075/)
业务流程处于不断变化的阶段。 员工加入组织、晋升并最终退休。 客户搬到新地址或更改联系方式。 在某些情况下,整个部门都会被吸收、更名或重组。 因此,您必须确保您的维度模型能够准确地反映这种动态环境。
通过应用 正确的 SCD 处理技术 对于维度数据模型,您可以考虑源系统中记录的更改,并在必要时保留历史数据以供进一步分析。 现在,可以根据您的要求提供多种 SCD 类型。 技术范围从覆盖过去值的 SCD 类型 1 到更新当前记录同时添加新字段以显示属性的先前值的 SCD 类型 3。
维度表还可能包含附加字段来反映特定更改何时生效(生效日期/到期日期)或特定记录的货币(版本),以防多年来对其进行了多次更改。 您甚至可能有一个活动标志指示器来指示报告时正在使用哪个记录版本。
这里需要注意的是,在手动加载数据仓库期间促进这些插入和更新是很麻烦的。 毕竟,我们正在讨论实施自动检查源系统记录中的更改的流程,然后确定记录是否应该被覆盖或更新。 在后一种情况下,可能需要生成几个新的代理键,更不用说多个新字段了。 您还必须为所有这些活动创建数据映射。
如果您正在借助遵循无代码元数据驱动方法的维度数据建模工具来开发数据仓库,则可以简单地将相关的 SCD 类型分配给逻辑级别的属性。 然后,这些详细信息将传播到 ETL 引擎,该引擎可以自动处理后续插入/更新、连接和数据映射注意事项,而无需任何手动操作。
简化事实表加载

所有数据管道都通向事实表和维度表
事实表加载是数据管道开发期间引入大量额外手动工作的另一个领域。 此过程涉及设计维度表之间的多个联接。 考虑到事实表通常包含数百万条记录,执行此操作的高成本是显而易见的。
每次填充事实表时,维度数据模型中的查找都会对照相关维度表交叉引用每个业务键,并将其转换为代理键。 假设维度表特别大,或者对源记录进行了多次更改(维度变化缓慢的情况)。 在这种情况下,查找可能会变得特别耗时且占用资源。 当然,随着交易数据的不断更新,这个任务将会不断重复。
在许多情况下,您可能需要创建一个额外的 暂存表 在源系统和数据仓库之间存储所有这些历史数据,从而更容易在加载过程中进一步处理它。
您可能还必须从源系统执行高级分层数据映射,以确保将正确粒度的数据加载到事实表中。
现在,如果我们回到 元数据驱动方法 正如前面所述,我们可以找到一种方法来从根本上加速这一过程。 相反,如果您在维度数据模型中配置事实属性,然后在数据管道中使用这些实体,则底层 ETL/ELT 引擎可以自动执行数据仓库填充所需的联接和查找。
制定流程来处理提前到达的事实

有时,您的业务环境的实际情况可能并不完全符合标准模式的要求。
例如,在组织获得有关应聘者身份甚至具体加入日期的任何信息之前,可能会为新聘人员生成员工 ID。 如果您已经构建了维度数据模型来反映您的 HR 流程,则此场景将生成没有任何相关维度属性的事实表记录。 本质上,外键查找失败。
现在,在这种情况下,需要等待所需信息到达,因此最好的方法是用包含默认值的占位符维度替换丢失的数据。 然后,一旦完整记录了员工的详细信息,就可以在相关表中更新属性。 在其他情况下,您可能根本不想处理记录,在这种情况下,您希望在数据仓库填充期间完全标记或忽略该条目。
无论您如何处理这些情况,维度数据模型都必须允许反映业务性质的动态配置。
快速设计元数据丰富的维度数据模型 Astera 数据仓库生成器
Astera 数据仓库生成器 是一款全面的维度数据建模工具,可让您在几分钟内从事务系统中设计出全面的维度模型。
我们直观的引擎可以自动开发最适合的模式,根据源数据库中包含的实体关系分配事实和维度。 或者,您可以利用 ADWB 功能丰富的工具箱从头开始创建您自己的维度模型,并包含事实、维度和日期维度表。 然后,只需为每个实体配置必要的属性,包括 SCD 类型、代理键、业务键和其他标识元数据。
我们还提供各种功能来加速数据仓库加载过程,包括专用事实和维度加载器,以加快数据传输到您的目的地。 ADWB 还提供了一个专门构建的数据模型查询对象,它允许您连接多个源系统表以创建一个分层源实体,您可以轻松地将其映射到相关的数据仓库表。
仔细看看 Astera DW Builder 的维度建模和数据仓库自动化功能, 联络方式 现在和我们在一起。 或者 退房 该产品适合您自己。


