星型模型

现在对AWB工作台也熟悉了一些,对星型模型有了更深的理解,用一个实例来讲解吧,比看标准教材肯定理解的更快。先看一个cube。如图:

image

点击实际表格,可以看到如下界面:

image

上面的Key什么的全部是维度,下面的全部是key figure。点击运行我们可以看到如下:

image

里面的维度全部都是数字,为什么是这样子下面再说,我现在只说现象。双击后进入如下界面:

image

选择任意一个维度,点击check table,看到如下界面:

image

SID也是数字的。看看bw的星型模型到底是什么形状吧,有个总的图。

image

一个fact table连接到多个dimension,一个dimension连接一个SID table,真正的主数据全部放在了master data中,星型模型里面全部是替代的ID号。sid号连接的属性或者文本不是通过主外键连接,而是通过abap程序。这种用数字来连接这些table首先减少了数据的冗余,多个cube可以共用主数据,用数字做连接也提高了程序的效率。

值得说下我之前以为一个维只能有一个字段,其实不是的,想象query里一个维度里面有多个characteristics,还有最上面的那张图,一个dimension里分配了多个信息对象。

### 数据仓库中的星型模型设计与实现 星型模型(Star Schema)是一种常见的数据仓库建模方式,主要用于支持联机分析处理(OLAP)。其核心思想是围绕一个事实表(Fact Table),通过维度表(Dimension Table)来描述和组织数据。这种模型的设计目标是简化查询操作并提高查询效率[^1]。 #### 星型模型的核心特点 - **中心事实表**:包含度量值或数值型数据,通常用于分析目的。 - **维度表**:围绕事实表的多个维度表提供上下文信息,例如时间、地点、产品等。 - **扁平化结构**:通过冗余存储维度数据,避免复杂的表连接,从而提升查询性能[^2]。 #### 星型模型的设计原则 在设计星型模型时,需要遵循以下原则: 1. 确定业务过程:明确需要分析的业务流程,例如销售、库存管理等。 2. 定义事实表:选择适当的度量值作为事实表的核心内容。 3. 设计维度表:为每个相关维度创建单独的表,并确保维度表的数据完整性[^3]。 #### 星型模型的应用场景 星型模型适用于需要频繁进行数据分析的场景,尤其是在以下情况下表现优异: - 查询需求简单且固定,不需要复杂的多层关联。 - 数据冗余可以接受,优先考虑查询性能。 - 业务逻辑清晰,维度和事实之间的关系明确。 #### Python 示例:星型模型的实现 以下是一个简单的星型模型实现示例,展示如何使用Python模拟星型模型中的数据结构: ```python # 定义维度表 class Dimension: def __init__(self, id, name): self.id = id self.name = name # 时间维度表 time_dimension = [Dimension(id=i, name=f"Date_{i}") for i in range(1, 6)] # 产品维度表 product_dimension = [Dimension(id=i, name=f"Product_{i}") for i in range(1, 6)] # 定义事实表 class Fact: def __init__(self, time_id, product_id, sales_amount): self.time_id = time_id self.product_id = product_id self.sales_amount = sales_amount # 销售事实表 sales_fact = [ Fact(time_id=1, product_id=1, sales_amount=100), Fact(time_id=2, product_id=2, sales_amount=200), Fact(time_id=3, product_id=3, sales_amount=300) ] # 查询示例:获取某个时间段内的总销售额 def query_sales_by_time(time_id): total_sales = sum(fact.sales_amount for fact in sales_fact if fact.time_id == time_id) return total_sales # 执行查询 print(query_sales_by_time(1)) # 输出:100 ``` 上述代码展示了如何通过定义维度表和事实表来构建一个简单的星型模型,并实现了基于时间维度的销售额查询功能[^1]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值