什么是 BI 系统里的 Star Schema

举报
汪子熙 发表于 2024/09/01 11:47:02 2024/09/01
【摘要】 星型架构 (Star Schema) 是数据仓库和商业智能 (BI) 领域中广泛采用的一种数据模型。它的名字来源于其结构的视觉效果,中心的事实表和周围的维度表形成类似星星的形状。这个架构的核心元素包括事实表(Fact Table)和一系列维度表(Dimension Tables)。事实表保存的是业务事件或事务的度量(比如销售金额、销售数量),而它的外键指向相关的维度表。维度表包含的是业务对象...

星型架构 (Star Schema) 是数据仓库和商业智能 (BI) 领域中广泛采用的一种数据模型。它的名字来源于其结构的视觉效果,中心的事实表和周围的维度表形成类似星星的形状。

这个架构的核心元素包括事实表(Fact Table)和一系列维度表(Dimension Tables)。事实表保存的是业务事件或事务的度量(比如销售金额、销售数量),而它的外键指向相关的维度表。维度表包含的是业务对象的属性信息(比如产品、时间、客户等)。

为了更好地理解星型架构,我们可以联想到一个大型零售商店的销售数据分析系统。

真实世界的例子:零售商店销售数据分析

事实表:Sales_Fact

零售商店每天会有大量的销售数据,这些数据需要被记录和分析。假设我们有这样一个事实表 Sales_Fact,记录每一笔销售的具体信息。

Sale_ID Product_ID Customer_ID Time_ID Sales_Amount Quantity_Sold
1 101 2001 202101 100.00 2
2 105 2002 202102 150.00 1
3 101 2003 202103 200.00 4

每一行记录一笔具体的销售交易。其中 Product_IDCustomer_IDTime_ID 是外键,分别指向产品表、客户表和时间表。

维度表:Product_Dimension, Customer_Dimension, Time_Dimension

维度表存储的是关于产品、客户和时间的详细信息。

Product_Dimension

Product_ID Product_Name Category Price
101 Widget_A Electronics 50.00
105 Widget_B Toys 150.00

Customer_Dimension

Customer_ID Customer_Name Region Age_Group
2001 Alice North 25-34
2002 Bob East 35-44

Time_Dimension

Time_ID Year Month Day
202101 2021 01 01
202102 2021 02 01

在这个例子中,Sales_Fact 表中记录的每一笔销售的具体信息包括销售的产品、销售的时间和购买的客户,而这些信息通过外键关联到相关的维度表 Product_DimensionCustomer_DimensionTime_Dimension 中。

使用星型架构的好处

这个架构的主要优点在于其设计相对简单、查询性能优异及易于理解和使用。查询性能的提升主要归功于维度表的去归纳化(denormalization),这意味着每个维度表独立存在,而不是与更多表连接,从而减少了查询的复杂度和执行时间。

案例研究:大型超市的销售分析系统

接下来,我们以一个更复杂的大型超市为例,探讨星型架构在实际应用中的细节和优势。

问题背景

大润发是一家大型连锁超市,它既在国内有广泛的门店网络,也有电商平台业务。公司希望通过数据仓库系统分析其每天、每周、每月的销售情况,找到销售规律以及顾客行为模式,从而制定更有针对性的营销策略。

数据需求

为了实现全面的销售分析,大润发需要记录的销售数据包括:

  1. 每笔交易涉及的具体产品。
  2. 交易发生的时间。
  3. 购买商品的客户信息。
  4. 每笔交易的金额和数量。
  5. 销售发生的门店或者是电商平台。

设计架构

基于上述数据需求,我们可以设计一个星型架构的数据仓库来满足查询和分析需求。

事实表:Sales_Fact

Sale_ID Product_ID Customer_ID Time_ID Store_ID Channel_ID Sales_Amount Quantity_Sold
1 101 2001 202101 3001 4001 100.00 2
2 105 2002 202102 3002 4002 150.00 1

维度表:Product_Dimension

Product_ID Product_Name Category Price
101 Widget_A Electronics 50.00
105 Widget_B Toys 150.00

维度表:Customer_Dimension

Customer_ID Customer_Name Region Age_Group
2001 Alice North 25-34
2002 Bob East 35-44

维度表:Time_Dimension

Time_ID Year Month Day
202101 2021 01 01
202102 2021 02 01

维度表:Store_Dimension

Store_ID Store_Name Location Size
3001 Store_A City_Center Large
3002 Store_B Suburb Medium

维度表:Channel_Dimension

Channel_ID Channel_Name
4001 In-Store
4002 Online

通过这样的设计,每一笔销售交易都能被具体地分类和分析。分析人员可以通过查询 Sales_Fact 表与各种维度表进行连接,提取和分析各种维度的信息。例如,他们可以轻松地分析出某个地区某类商品在特定月份的销售情况。

查询示例

例如,营销团队想知道 2021 年 1 月份所有电子产品在北方地区的销售额和销售数量。可以使用如下 SQL 语句实现:

SELECT SUM(Sales_Amount) AS Total_Sales, SUM(Quantity_Sold) AS Total_Quantity
FROM Sales_Fact
JOIN Product_Dimension ON Sales_Fact.Product_ID = Product_Dimension.Product_ID
JOIN Customer_Dimension ON Sales_Fact.Customer_ID = Customer_Dimension.Customer_ID
JOIN Time_Dimension ON Sales_Fact.Time_ID = Time_Dimension.Time_ID
WHERE Time_Dimension.Year = 2021
AND Time_Dimension.Month = 1
AND Product_Dimension.Category = `Electronics`
AND Customer_Dimension.Region = `North`;

这样的查询能够快速返回结果,而无需额外复杂的连接操作。

总结和展望

星型架构之所以被广泛采用,是因为它在处理和查询大规模数据时效率高且易于理解。通过一个中心的事实表和多个维度表,用户可以快速、灵活地进行各种商业分析。

在未来,随着数据量的增长和分析需求的多样化,星型架构还有可能进一步演化。例如,一些企业开始结合雪花架构(Snowflake Schema),即在一定程度上增加维度表的规范化,以便在数据极其庞大和多样化时,提高存储效率和复杂查询的性能。

总的来说,掌握和运用星型架构,不仅是数据工程师和商业分析师的基本技能,也将在企业数据驱动决策中发挥重要作用。无论是零售企业的大规模销售数据分析,还是其他行业的业务数据处理,星型架构都提供了可靠、高效的解决方案。通过不断优化和探索,我们可以利用星型架构,更好地挖掘数据的价值,驱动企业业务的持续增长和改善。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。