该分析围绕“客户”维度展开
不,分析应该围绕您的事实表解决
“事实”是事实表的一个坏名字
您要分析的过程或事件是什么?那是你的事实表
您的日期维度应如下所示:
create table dim.date (
date_key int primary key,
name text not null unique,
date_iso date unique,
year smallint,
quarter smallint,
month smallint,
month_name text
...
);
insert into dim.date values
(0, 'N/A', null, null, null, null, null),
(20180101, 'Jan 1, 2018', '2018-01-21', 2018, 1, 1, 'January');
一般来说,您应该避免在数据库中使用智能键,但 dim.date 是一个例外。对主键使用 int 类型,但使其值表示日期(例如 20180101 代表 '2018-01-01')。这使得将来按日期对事实表进行分区变得更加容易
此外,您不需要数据仓库中的外键。您的 ETL 工具将处理参照完整性。
您应该从一个包含分析所需的所有列的大事实表开始。如果需要节省磁盘空间,则将一些数据拆分为维度
您应该阅读敏捷数据仓库设计