4

我是星型模式建模的新手,刚阅读过Data Warehouse Toolkit

我有一个业务流程,让客户和非客户与我们的一些员工进行电话会议。

我的事实表,称之为“观众”,将包含一个参加者连接到呼叫的时间,以及这个人连接到呼叫的成本。颗粒是“单独连接到电话会议”。

我是否应该以这种方式使用符合标准的客户维度并创建非客户维度(对于尚未成为客户的调用者)(省略不属于此问题的维度):

第一个潜在模型

或者以这种方式具有与符合标准的客户维度相关的不符合标准的出席维度是否可以/更好:

第二个潜在模型

或者是否有更好/标准的机制来模拟这样的业务流程?

编辑:

如果使用上面的模型 2,但是在客户维度表和参与维度之上创建一个视图以使其看起来只是一个维度,那又如何呢?

这是下面达米尔答案的可接受替代方案吗?

4

4 回答 4

3

无需将客户端拆分为两个表(维度)。简单地将所有客户、活跃客户和潜在客户放入同一个维度表中。然后,您可以引入 IsActive 属性(列)来区分付费客户和潜在客户。您迟早会使用数据挖掘工具来了解更多关于客户的信息,以及愿意为您的服务付费的人与不愿意付费的人的区别。为了让算法发挥作用,您必须为两组人提供数据——付费的人和不付费的人。总而言之,潜在客户与付费客户属于同一张表。

有了这个,你可以使用你的模型 1。确保事实表中的度量是有意义的。例如,如果 call_id =123 有 10 人参与,那么

sum(cost_of_connection)
from factAudience
where call_id = 123;

应该返回通话的总费用,而不是毫无意义的东西——比如实际费用的 10 倍。

编辑

“付费客户”和“潜在客户”都是客户的一种,因此属于同一个维度表——dimClient。在 DW 中的某个地方,有一个 factSale(或类似的)与 dimSale 的 FK。即使您在 dimClient 中没有用于区分付费和潜在客户的列——您仍然可以通过加入 factSale 和 dimClient 来获得付费客户。

“谁是顾客?” 在组织中引入 DW 时,这是一个常见的争论。为了能够分析客户获取、保留、转化等,潜在客户与付费客户具有相同的待遇——至少在 DW 中是这样。请记住,获取和创造新客户是(几乎)任何 CEO 的首要任务。

于 2010-03-17T12:01:42.937 回答
2

我会选择第二个:它在他们自己的专用维度中对参与者进行建模,同时允许您通过该维度中的属性公开他们的客户(或其他方式),这可能是您想要深入研究的方式现实生活(“告诉我所有与会者”,然后是“现在哪些是客户”)。

在您的客户维度中,我将为所有与会者填充 client_id,匹配与会者不是客户的“未知”元素。

这里有一个很好的讨论:

http://crpit.com/confpapers/CRPITV75Riazati.pdf

于 2010-03-11T19:58:44.800 回答
0

这没什么区别。第二个版本可能更正确,但是你的 olap 系统支持吗?

于 2010-03-10T19:50:35.000 回答
0

第二个对我来说看起来像“雪花模式”。查看雪花模式,从 wikipedia 文章开始。你会看到星星和雪花之间的几个比较。

于 2010-03-13T12:12:04.090 回答