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

现代湖屋的数据建模最佳实践与实现

分享这篇文章

我们的大量客户正在将他们的传统数据仓库迁移到Databricks Lakehouse,因为它不仅可以使他们的数据仓库现代化,而且还可以立即访问成熟的流媒体和高级分析平台。bob体育客户端下载Lakehouse可以做到这一切,因为它是一个平台,可以满足您所有的流媒体bob体育客户端下载、ETL、BI和AI需求,它可以帮助您的业务和数据团队在一个平台上协作。

当我们在该领域帮助客户时,我们发现许多人都在寻找围绕适当的数据建模和Databricks中的物理数据模型实现的最佳实践。

在本文中,我们的目标是深入研究Databricks Lakehouse平台上维度建模的最佳实践,并提供一个使用我们的表创建和DDL最佳实践实现物理数据模型的现场示例。bob体育客户端下载

以下是我们将在这篇博客中讨论的高级话题:

  1. 数据建模的重要性
  2. 常用数据建模技术
  3. 数据仓库建模DDL实现
  4. Databricks Lakehouse数据建模的最佳实践和建议

数据建模对数据仓库的重要性

数据模型是构建数据仓库的前沿和中心。通常,该流程从保护语义业务信息模型开始,然后是逻辑数据模型,最后是物理数据模型(PDM)。这一切都从适当的系统分析和设计阶段开始,首先创建业务信息模型和流程流,并根据组织内的业务流程捕获关键业务实体、属性及其交互。然后创建逻辑数据模型,描述实体如何相互关联,这是一个技术不可知的模型。最后,基于底层技术平台创建PDM,以确保能够有效地执行写和读操作。bob体育客户端下载我们都知道,对于数据仓库,分析友好的建模风格星形架构而且数据保险库很受欢迎。

在数据库中创建物理数据模型的最佳实践

基于已定义的业务问题,数据模型设计的目标是以一种简单的方式表示数据,以实现可重用性、灵活性和可伸缩性。下面是一个典型的星型模式数据模型,它显示了一个保存每笔交易的Sales事实表和各种维表(如客户、产品、商店、日期等),您可以通过这些维表对数据进行切片。可以将维度与事实表连接起来,以回答特定的业务问题,例如某个月最受欢迎的产品是什么,或者哪个商店在该季度表现最好。让我们看看如何在Databricks中实现它。

一个图表显示了星型模式如何工作,事实和维度构建在lakehouse
湖屋的维度模型

数据仓库建模DDL在数据库上的实现

在下面的小节中,我们将使用示例演示下面的内容。

  • 创建3级目录,数据库和表
  • 主键、外键定义
  • 代理键的标识列
  • 数据质量的列约束
  • 索引、优化和分析
  • 先进的技术

1.统一目录- 3级命名空间

Unity Catalog是一个Databricks治理层,它允许Databricks管理员和数据管理员使用一个Metastore在Databricks帐户的所有工作区中集中管理用户和他们对数据的访问。不同工作区中的用户可以共享对相同数据的访问,这取决于Unity Catalog中集中授予的权限。Unity Catalog有3级命名空间(Catalog .schema(database).table)来组织你的数据。BOB低频彩在这里了解更多关于Unity Catalog的信息。

统一目录- 3级命名空间

统一目录- 3级命名空间

下面介绍如何在数据库中创建表之前设置编目和模式。在我们的示例中,我们创建了一个目录US_Stores和一个模式(数据库)Sales_DW如下所示,并将它们用于本节后面的部分。

创建目录如果存在US_Stores;使用目录US_Stores;创建模式,如果存在Sales_DW;使用SCHEMA Sales_DW;

设置目录和数据库

下面是一个查询fact_sales表,具有3级命名空间。

使用catalog.database.tablename查询表格的示例
使用catalog.database.tablename查询表格的示例

2.主键、外键定义

在创建数据模型时,主键和外键定义非常重要。支持PK/FK定义的能力使得在Databricks中定义数据模型超级简单。它还可以帮助分析人员快速找出Databricks SQL Warehouse中的连接关系,以便他们能够有效地编写查询。像大多数其他大规模并行处理(MPP)、EDW和云数据仓库一样,PK/FK约束只是信息性的。Databricks不支持PK/FK关系的强制执行,但是提供了定义它的能力,从而使语义数据模型的设计变得容易。

对象的创建示例dim_store可以作为标识列,同时它也被定义为主键。

——存储尺寸创建取代表格dim_store (可以长整型数字生成的总作为身份主要的键,business_key字符串,名称字符串,电子邮件的字符串,城市的字符串,地址字符串,phone_number字符串,created_date时间戳updated_date时间戳start_at时间戳end_at时间戳);

用于使用主键定义创建存储维度的DDL实现

在创建表之后,我们可以看到主键(store_id)在下面的表定义中作为约束创建。

主键store_id显示为表约束
主键store_id显示为表约束

对象的创建示例fact_salestransaction_id作为主键,以及引用维度表的外键。

——事实销售创建取代表格fact_sales (transaction_id长整型数字主要的键,date_id长整型数字约束dim_date_fk外国关键参考文献dim_date,customer_id长整型数字约束dim_customer_fk外国关键参考文献dim_customer,product_id长整型数字约束dim_product_fk外国关键参考文献dim_product,可以长整型数字约束dim_store_fk外国关键参考文献dim_store,store_business_key字符串,sales_amount);

用于使用外键定义创建销售事实的DDL实现

在创建事实表之后,我们可以看到主键(transaction_id)和外键在下面的表定义中作为约束创建。

用主键和外键引用维度的事实表定义
用主键和外键引用维度的事实表定义

3.代理键的标识列

一个标识列是数据库中的一列,它自动为每一行数据生成一个唯一的ID号。它们通常用于在数据仓库中创建代理键。代理键是系统生成的、无意义的键,因此我们不必依赖各种自然主键和多个字段的连接来标识行的唯一性。通常,这些代理键在数据仓库中用作主键和外键。中讨论标识列的详细信息这个博客.下面是创建标识列customer_id的示例,自动分配的值从1开始,加1。

——客户维度创建取代表格dim_customer (customer_id长整型数字生成的总作为身份开始1增量通过1主要的键,名称字符串,电子邮件的字符串,地址字符串,created_date时间戳updated_date时间戳start_at时间戳end_at时间戳);

用于创建具有标识列的客户维的DDL实现

4.数据质量的列约束

除了主键和外键信息约束外,Databricks还支持列级数据质量检查约束,以确保添加到表中的数据的质量和完整性。约束会自动验证。很好的例子是NOT NULL约束和列值约束。与其他云数据仓库不同,Databricks进一步提供了列值检查约束,这对于确保给定列的数据质量非常有用。我们可以在下面看到valid_sales_amount检查约束将验证所有现有行的满足约束(即。销售金额>),然后再将其添加到表中。更多信息可以在这里找到在这里

下面是为其添加约束的示例dim_store而且fact_sales分别来确保可以而且sales_amount具有有效值。

——给dim_store添加约束,确保列store_id在1到9998之间改变表格US_Stores.Sales_DW.dim_store添加约束valid_store_id检查(可以>0而且可以<9999);——为fact_sales添加约束,以确保列sales_amount有一个有效值改变表格US_Stores.Sales_DW.fact_sales添加约束valid_sales_amount检查(sales_amount>0);

为现有表添加列约束,保证数据质量

5.索引、优化和分析

传统数据库有b-树和位图索引,Databricks有更先进的索引形式-多维z -序聚类索引,我们还支持Bloom过滤器索引。首先,Delta文件格式使用Parquet文件格式,这是一种柱状压缩文件格式,因此它在列修剪方面已经非常有效,在此基础上使用z顺序索引使您能够在几秒钟内筛选pb级的数据。这两个z值而且布卢姆滤波器索引极大地减少了为了回答针对大型Delta表的高选择性查询而需要扫描的数据量,这通常会转化为数量级的运行时改进和成本节约。在用于最频繁连接的主键和外键上使用z顺序。并根据需要使用额外的布鲁姆过滤器索引。

通过customer_id和product_id优化销售表更好的查询和连接性能优化US_Stores.Sales_DW。fact_salesZORDER通过(customer_id product_id)

在customer_id和product_id上优化fact_sales以获得更好的性能

——创建bloomfilter索引,在store_business_key上启用数据跳过创建BLOOMFILTER指数表格US_Stores.Sales_DW.fact_sales列(store_business_key)

创建一个Bloomfilter索引,使数据跳过给定的列

就像任何其他数据仓库一样,您可以分析表更新统计信息,以确保查询优化器拥有最佳的统计信息,从而创建最佳的查询计划。

——收集所有列的统计信息以获得更好的性能分析表格US_Stores.Sales_DW.fact_salesCOMPUTE STATISTICS所有列;

收集所有列的统计信息,以便更好地执行查询计划

6.先进的技术

而Databricks支持先进的技术,如表分区请谨慎使用这些功能,只有当你有很多tb的压缩数据时-因为大多数时候我们的OPTIMIZE和Z-ORDER索引会给你最好的文件和数据修剪,这使得按日期或月份划分表几乎是一个糟糕的做法。但是,确保为表设置了ddl是一个很好的实践自动优化和自动压缩.这将确保您在小文件中经常写入的数据被压缩成更大的Delta柱状压缩格式。

您是否希望利用可视化数据建模工具?我们的合作伙伴erwin数据建模器的任务可以用来反向工程,创建和实现星模式,数据库,和任何行业数据模型在Databricks只需点击几下。

Databricks笔记本示例

使用Databricks平台,您bob体育客户端下载可以轻松地设计和实现各种数据模型。要在完整的工作流程中查看以上所有示例,请查看这个例子

请也查看我们的相关博客-用Delta Lake在Databricks中实现星型模式的五个简单步骤

开始在Lakehouse中构建您的维度模型

免费试用Databricks 14天

免费试用Databricks

相关的帖子

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