bob体育客户端下载平台的博客

用Databricks Lakehouse实时加载数据仓库数据模型

使用Delta Live table实现现代湖屋的维度建模
分享这篇文章

维度建模是构建现代数据仓库最流行的数据建模技术之一。它允许客户根据企业的业务需求快速开发事实和维度。在帮助该领域的客户时,我们发现许多人都在从Databricks中寻找最佳实践和实现参考体系结构。

在本文中,我们的目标是深入研究Databricks的Lakehouse平台上维度建模的最佳实践,并提供一个使用Delta live Tables实时加载EDW维度模型的实时示例。bob体育客户端下载

下面是我们将在这篇博客中介绍的高级步骤:

  1. 定义业务问题
  2. 设计一个维度模型
  3. 维度建模的最佳实践和建议
  4. 在Databricks Lakehouse中实现维度模型
  5. 结论

1.定义业务问题

维度建模是面向业务的;它总是从一个业务问题开始。在构建维度模型之前,我们需要理解要解决的业务问题,因为它表明最终用户将如何表示和使用数据资产。我们需要设计数据模型以支持更容易访问和更快的查询。

业务矩阵是维度建模中的一个基本概念,下面是业务矩阵的一个示例,其中列是共享维度,行表示业务流程。已定义的业务问题决定事实数据的粒度和所需的维。这里的关键思想是,我们可以基于业务矩阵及其共享或一致的维度轻松地增量地构建额外的数据资产。

具有共享维度和业务流程的业务矩阵
具有共享维度和业务流程的业务矩阵

在这里,我们假设业务赞助商希望团队构建一份报告,以提供以下方面的见解:

  1. 什么是最畅销的产品,以便他们了解产品的受欢迎程度
  2. 哪些表现最好的商店可以学习良好的商店实践

2.设计一个维度模型

基于已定义的业务问题,数据模型设计旨在高效地表示数据,以实现可重用性、灵活性和可伸缩性。下面是可以解决上述业务问题的高级数据模型。

一个图表展示了星型模式是如何工作的,其中包含在Lakehouse中构建的事实和维度
湖屋的维度模型

对于不同的数据查询模式,设计应该易于理解和高效。从模型中,我们设计了销售事实表来回答我们的业务问题;正如你所看到的,除了维度的外键(FKs),它只包含用于衡量业务的数值指标,例如sales_amount。

我们还设计了诸如Product、Store、Customer、Date等维度表,它们提供事实数据的上下文信息。维度表通常与事实表相连接,以回答特定的业务问题,例如给定月份最受欢迎的产品,哪个商店是该季度表现最好的商店,等等。

3.维度建模的最佳实践和建议

使用Databricks Lakehouse平台,您可以轻松bob体育客户端下载地设计和实现维度模型,并简单地为给定的主题领域构建事实和维度。

下面是在实现维度模型时推荐的一些最佳实践:

  • 应该对维度表进行反规格化。与第三种标准形式或雪花类型的模型不同,维度表通常是高度非规范化的,在单个维度表中具有扁平的多对一关系。
  • 当不同维度表中的属性具有相同的列名和域内容时,使用一致的维度表。这个优点是,来自不同事实表的数据可以使用与每个事实表相关联的一致维度属性组合在一个报告中。
  • 维度表的一个常见趋势是随着时间的推移跟踪维度的更改,以支持按原样或按原样报告。您可以根据不同的需求轻松应用以下基本技术来处理维度。
    • 类型1技术覆盖维度属性的初始值。
    • 对于类型2技术(最常见的SCD技术),您可以使用它随着时间进行精确的更改跟踪。
    这可以通过Delta Live Tables实现轻松实现。
  • 主键+外键约束允许像你们这样的最终用户理解表之间的关系。
  • IDENTITY列的用法添加新行时自动生成惟一的整数值。标识列是代理键的一种形式。参考博客链接欲知详情。
  • 执行检查约束永远不要担心数据质量或数据正确性问题。

4.在Databricks Lakehouse中实现维度模型

现在,让我们看一个基于Delta Live Tables的维度建模实现的例子:

下面的示例代码向我们展示了如何使用SCD Type 2创建维度表(dim_store),其中从源系统捕获更改数据。

——制作金桌创建增量式生活表格dim_storeTBLPROPERTIES(“质量”“黄金”)注释“慢慢改变尺寸类型2存储尺寸在黄金层”;—将所有更改存储为SCD2申请更改live.dim_store流(live.silver_store)键(可以)序列通过updated_date除了(_rescued_data input_file_name)存储作为SCD类型2

下面的示例代码向我们展示了如何创建一个事实表(fact_sale),约束为valid_product_id我们能够确保加载的所有事实记录都有一个与之相关联的有效产品。

—在金层中创建销售事实表创建流媒体直播表格fact_sale (约束valid_store_business_key违反下降约束product_id . valid_product_id . valid_product_id违反下降TBLPROPERTIES(“质量”“金”、“ignoreChanges”“真正的”)评论“黄金层销售事实表”作为选择sale.transaction_id,date.date_id,customer.customer_id,product.product_id作为product_id,store.store_id,store.business_key作为store_business_key,sales_amount流(live.silver_sale)出售内心的加入live.dim_date日期to_date (sale.transaction_date“M / d / yy”to_date (date.date“M / d / yyyy”——只加入活跃的客户内心的加入选择live.dim_customer在哪里__END_AT)客户sale.customer_idcustomer.customer_id—只与活性产物结合内心的加入选择live.dim_product在哪里__END_AT)产品sale.product产品。SKU只加入活动商店内心的加入选择live.dim_store在哪里__END_AT)存储sale.storestore.business_key

可以找到Delta Live Table管道示例在这里.详情请参阅Delta Live Tables快速入门关于如何创建Delta Live Table管道。如下所示,DLT提供了ETL管道的完全可见性,以及铜、银和金层之间不同对象之间的依赖关系湖屋勋章建筑

端到端DLT管道
端到端DLT管道

下面是一个维度表的例子dim_store根据传入的更改进行更新。下面是商店布里斯班机场已更新为布里斯班机场V2,在开箱即用的SCD Type 2支持下,原始记录于2022年1月7日结束,并创建了一个在同一天开始的新记录,该记录具有开放结束日期(NULL) -这表明布里斯班机场的最新记录。

SCD类型2存储尺寸
SCD类型2存储尺寸

有关更多实施详情,请参阅在这里完整的笔记本示例。

5.结论

在本博客中,我们详细了解了维度建模概念、最佳实践以及如何使用Delta Live Tables实现它们。

BOB低频彩了解关于维度建模的更多信息金博科技

开始在Lakehouse中构建维度模型

免费试用Databricks 14天

免费试用Databricks

相关的帖子

看到所有bob体育客户端下载平台的博客的帖子