我正在开发一个旨在捕获网站访问和购买的数据仓库。我们假设通过识别先前网站访问的模式,您可以深入了解当前网站访问的访问者行为
我的事实表的粒度是个人网站访问,如果客户进行购买,我们分配1,如果不购买则分配0。我们的事实是添加剂。我们希望能够探索并了解先前访问的行为如何影响当前访问的行动,因此我试图弄清楚如何对此进行建模。在特定网站上,访问者可以先访问1,2或12个网站。
所以我的问题是如何建模过去的访问维度,包括过去的访问日期,过去的访问活动(购买或不购买,网站上的时间等)。这是桥表的用例吗?
答案 0 :(得分:1)
数据仓库中的桥接表主要(完全?)用于处理您似乎没有的多对多关系。
如果您的事实表的粒度是网站访问,那么您不需要“过去访问”维度,因为您的事实表已包含访问历史记录。
这里有两个维度: 顾客 日期
网站上的时间大概是一个数字,由于您将购买/不购买视为布尔分数(1,0),因此这些都是度量并属于事实表。
“客户”维度适用于您的客户属性。不要在这里采取措施(例如先前的分数)。您还应该考虑如何处理更改(可能是SCD类型2)。
您可以将日期字段直接放在事实表中,但它作为一个单独的维度更强大,因为您可以更方便地按季度,财政年度,公共假期等进行分析。
所以,
示例Fact_Website_Visit表:
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 | IsWeekend
为了演示这是如何运作的,我写了一份示例报告,看看销售成功率以及按客户人口统计分类的周末在线上网平均时间:
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