识别数据仓库设计中的事实表

Posted

技术标签:

【中文标题】识别数据仓库设计中的事实表【英文标题】:Identifying the fact table in data warehouse design 【发布时间】:2015-07-14 21:21:10 【问题描述】:

我正在尝试使用包含有关帮助台服务调用信息的 Excel 表中的星型模式设计我的第一个数据集市,该表包含 33 个字段,包括不同的信息,我无法识别事实表,因为我想要稍后根据不同的 KPI 进行报告。 我想知道如何轻松识别事实表度量,我还有另一个问题是:事实表可以只包含维度的外键而没有度量吗?在此先感谢大家,并为我的英语不好感到抱歉。

【问题讨论】:

【参考方案1】:

    您可以拥有多个事实表。

    事实表表示您要分析的事件或过程。

    事实表的结构取决于您尝试分析的过程或事件。

    您需要告诉我们您想要分析的事件或流程,然后我们才能进一步帮助您。

事实表可以只包含维度的外键而不包含度量吗?

是的。这称为factless fact table。


假设您要对调用进行基本分析:

您的完整表格可能如下所示

CALL_ID
START_DATE
DURATION
AGENT_NAME
AGENT_TENURE    (how long worked for company)
CUSTOMER_NAME
CUSTOMER_TENURE (how long a customer)
PRODUCT_NAME    (the product the customer is calling about)
RESOLVED

你可以把它变成这样的事实表:

CALL_ID
START_DATE_KEY
AGENT_KEY
CUSTOMER_KEY
PRODUCT_KEY
DURATION       (measure)
RESOLVED       (quasi-measure)

您将拥有一个 DATE 维度表、AGENT 维度表、CUSTOMER 维度表和 PRODUCT 维度表。

Agile Data Warehouse Design 是一本好书,Kimball 的书也是。

【讨论】:

非常感谢,我还有一个问题:我们可以在事实表中存储一些计算的度量吗? 非常感谢,您的回答很有帮助【参考方案2】:

一般来说,我所做的方式(并且有很多方法可以做任何事情)是在事实表中使用 FKey 引用分类数据,但是您想要对其执行聚合的任何内容(通常因为数据类型 $/integers/doubles 等)也可以在事实表中。例如,事实表可能包含类型的层次结构,例如 product_category >> product_name,它通常还包含时间和/或位置字段;所有这些都将由 FKEY 引用到查找表。度量列通常是基于整数或货币数据,并用于按其他字段分组的聚合函数,如下所示:

    select sum(measureOne) as sum, product_category from facttable
where timeCol between X and Y group by product_category...etc

几年前的某个时候,我确实有一个没有度量列的事实表...因为我唯一的度量是基于计数的,我会通过在事实表中对不同维度进行分组来动态地做到这一点。

【讨论】:

非常感谢,我还有一个问题:我们可以在事实表中存储一些计算的度量吗?

以上是关于识别数据仓库设计中的事实表的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop之数据仓库设计

Hadoop之数据仓库设计

数据仓库设计

数据仓库事实表中的更新

BI:事实表设计/数据仓库建模

数据库或数据仓库中的事实表和暗表?