如何根据层级创建具有不同指标的维度模型
Posted
技术标签:
【中文标题】如何根据层级创建具有不同指标的维度模型【英文标题】:How to create a dimensional model with different metrics depending of the hierarchical level 【发布时间】:2014-07-28 17:21:18 【问题描述】:我需要为一家零售公司创建一个销售分析的维度环境。
我的Sales
事实中将出现的层次结构是:
1 - Country
1.1 - Region
1.1.1 - State
1.1.1.1 - City
1.1.1.1.1 - Neighbourhood
1.1.1.1.1.1 - Store
1.1.1.1.1.1.1 - Section
1.1.1.1.1.1.1.1 - Catgory
1.1.1.1.1.1.1.1.1 - Subcatgory
1.1.1.1.1.1.1.1.1.1 - Product
Number of Sales
、Revenue
和 Medium Ticket
(Revenue / Number of Sales
) 等指标在 Subcategory
级别之前是有意义的,因为如果我达到 Product
级别,聚合组成将需要更改(我猜)。
此外,诸如Productivity
之类的指标,即Revenue / Number of Store Staff
,存在于这个事实表中是没有意义的,因为它只适用于Store
级别(我猜也是)。
我想知道解决这个问题的最佳解决方案,因为所有这些都是关于 Sales
,但有些是有意义的,直到我的层次结构的特定级别和其他人没有。
等待回复,提前致谢!
【问题讨论】:
您使用的是什么类型的数据库或数据仓库软件? @Salmonerd Oracle 10g 与 Pentaho 数据集成 如果我想做某种报告或分析,我只需将数据连接到一个表中,该表包含销售记录中任何内容的所有必要属性数据。例如,如果您有一份销售文件,其中很可能有一个商店编号。然后,您可以加入商店的属性表,该表将存储国家、地区、州等内容。 【参考方案1】:您应该将层次结构拆分为 2 个维度,商店和产品
Stores维度是关于销售地点的,你可以把员工数量放在这个维度中
Store_Key STORE Neighbourhood City Country Num_Staff
1 Store1 4th Street LA US 10
2 Store2 Main Street NY US 2
产品维度看起来像
Product_Key Prod_Name SubCat Category Unit_Cost
1 Cheese Sticks Diary Food $2.00
2 Timer Software Computing $25.00
您的事实表对每个销售都有记录,并与上述维度相关
Store_Key Product_Key Date Quantity Tot_Amount
1 1 31/7/2014 5 $10.00 (store1 sells 5 cheese)
1 2 31/7/2014 1 $25.00 (store1 sells 1 timer)
2 1 31/7/2014 3 $6.00 (store2 sells 3 cheese)
2 2 31/7/2014 1 $25.00 (store2 sells 1 timer)
现在您的数据已经到位,您可以使用您的报告工具来获取您需要的度量。示例 SQL 如下所示
SELECT store.STORE,
SUM(fact.tot_amount) as revenue,
COUNT(*) as num_sales
SUM(fact.tot_amount) / store.NumStaff as Productivity
FROM tbl_Store store, tb_Fact fact
WHERE fact.Store_key = store.Store_key
GROUP BY store.STORE
应该返回以下结果
STORE revenue num_sales Productivity
Store1 $35.00 2 3.5
Store2 $31.00 2 15.5
【讨论】:
感谢您的回复。我理解你的观点。在这种情况下我认为会有更多的划分,例如Session
、Category
和Subcategory
是Product
属性。此外,Store
可以有多个部门,每个部门都有自己的 Productivity
分析。以上是关于如何根据层级创建具有不同指标的维度模型的主要内容,如果未能解决你的问题,请参考以下文章