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

Identifying the fact table in data warehouse design

我正在尝试使用来自 Excel Sheet 的星型模式设计我的第一个数据集市,其中包含有关帮助台服务调用的信息,此 sheet 包含 33 个字段,包括不同的信息,我无法确定事实 table 因为我想稍后根据不同的 KPI 进行报告。 我想知道如何轻松识别事实 table 度量,我还有另一个问题:事实 table 是否仅包含维度的外键而不包含度量?提前谢谢大家,对不起我的英语不好。

  1. 你可以有不止一个事实table。

  2. 一个事实 table 表示您要分析的事件或过程。

  3. 事实table的结构取决于您试图分析的过程或事件。

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

Can a fact table contain only foreign keys of dimensions and no measures?

是的。这称为 factless fact table


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

您的完整 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

你会把它变成事实 table 像这样:

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

您将拥有 DATE 维度 table、AGENT 维度 table、CUSTOMER 维度 table 和 PRODUCT 维度 table。

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

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

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

几年前的某个时候,我确实有一个没有度量列的事实 table...因为我唯一的度量是基于计数,我会通过将不同的分组动态地进行事实中的维度 table.