如何根据层级创建具有不同指标的维度模型

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 SalesRevenueMedium 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

【讨论】:

感谢您的回复。我理解你的观点。在这种情况下我认为会有更多的划分,例如SessionCategorySubcategoryProduct属性。此外,Store 可以有多个部门,每个部门都有自己的 Productivity 分析。

以上是关于如何根据层级创建具有不同指标的维度模型的主要内容,如果未能解决你的问题,请参考以下文章

在 scikit learn 中训练具有不同特征维度的逻辑回归模型

具有退化维度的蒙德里安表现不佳

如何创建具有选择的多个用户模型?

同一实体具有不同业务键的维度

在不同数据维度上评估模型

如何连接具有 2 个不同维度的 2d 张量