是否有针对多值维度的维度建模设计模式

Is there a dimension modeling design pattern for multi-valued dimensions

我正在开发一个旨在捕获网站访问和购买的数据仓库。我们有一个假设,通过识别以前网站访问的模式,您可以深入了解当前网站访问的访问者行为

我的事实 table 的重点是个人网站访问,如果客户购买,我们分配 1,如果不购买,则分配 0。我们的事实是附加的。我们希望能够探索和理解先前访问的行为如何影响当前访问的行为,因此我试图弄清楚您将如何对此进行建模。在特定站点访问中,访问者可能有 1、2 或 12 次先前站点访问。

所以我的问题是如何为过去的访问维度建模,包括过去的访问日期、过去的访问 activity(购买或不购买、网站停留时间等)。这是一个使用桥的例子 table。

数据仓库中的桥 table 主要(专门?)用于处理多对多关系,而您似乎没有。

如果您的事实 table 是网站访问,那么您不需要 'past visit' 维度,因为您的事实 table 已经包含访问历史记录。

这里有两个维度: 顾客 日期

网站停留时间大概是一个数字,并且由于您将 purchase/no 购买视为布尔分数 (1,0),因此这些都是度量并且属于事实 table。

客户维度用于您的客户属性。不要在此处放置度量值(例如,先前的分数)。您还应该考虑如何处理更改(可能是 SCD 类型 2)。

您可以将日期字段直接放在事实 table 中,但它作为一个单独的维度更强大,因为您可以更轻松地按季度、财政年度、public 假期等进行分析.

所以,

示例 Fact_Website_Visit table:

Fact_Website_Visit_Key | Dim_Customer_Key | Dim_Date_Key |购买(1,0) | Time_On_Site

示例Dim_Customer维度:

Dim_Customer_Key | Customer_ID | Customer_Demographic

示例Dim_Date维度:

Dim_Date_Key | Full_Date |是周末

为了演示这是如何工作的,我编写了一个示例报告来查看销售成功和周末平均上网时间(按客户统计分组):

SELECT
Dim_Customer.demographic,
COUNT(fact.Fact_Website_Visit_Key) AS [# of Visits],
SUM (fact.Purchase) AS [Total Purchases],
AVG (fact.Time_On_Site) AS [Average Minutes Online],
SUM (fact.Purchase)/COUNT(fact.Fact_Website_Visit_Key)*100 AS [% sale success]
FROM
Fact_Website_Visit fact
INNER JOIN Dim_Customer ON fact.Dim_Customer_Key=Dim_Customer.Dim_Customer_Key
INNER JOIN Dim_Date ON fact.Dim_Date_Key=Dim_Date.Dim_Date_Key
WHERE
Dim_Date.IsWeekend='Y'
GROUP BY
Dim_Customer.Demographic