gpt4 book ai didi

database-design - 星型模式:客户和非客户的单独维度或服务员的共享维度?

转载 作者:行者123 更新时间:2023-12-04 06:52:46 24 4
gpt4 key购买 nike

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

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

我的事实表,称为“受众”,将包含一个衡量参加者连接到调用的时间以及此人连接到调用的成本的度量。粮食是“个人连接到电话 session ”。

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

First potential model

或者以这种方式拥有与符合客户维度相关的非符合参与维度是否可以/更好:

Second potential model

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

编辑:

使用上面的模型 2,但在客户维度表和参与维度之上创建一个 View ,使其看起来像只有一个维度会怎样?

这是下面 Damir 答案的可接受替代方案吗?

最佳答案

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

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

sum(cost_of_connection)
from factAudience
where call_id = 123;

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

编辑

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

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

关于database-design - 星型模式:客户和非客户的单独维度或服务员的共享维度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2396378/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com