我正在为数据立方体设计事实表,并且我有一个我真的不知道如何正确聚合的度量。以下 SQL 代码将创建一个小样本事实表和维度表:
create table FactTable (
ID int,
Color int,
Flag int)
insert into FactTable (ID, Color, Flag) values (1, 'RED', 1)
insert into FactTable (ID, Color, Flag) values (1, 'WHITE', 0)
insert into FactTable (ID, Color, Flag) values (1, 'BLUE', 1)
insert into FactTable (ID, Color, Flag) values (2, 'RED', 0)
insert into FactTable (ID, Color, Flag) values (2, 'WHITE', 0)
insert into FactTable (ID, Color, Flag) values (2, 'BLUE', 1)
insert into FactTable (ID, Color, Flag) values (3, 'RED', 1)
insert into FactTable (ID, Color, Flag) values (3, 'WHITE', 1)
insert into FactTable (ID, Color, Flag) values (3, 'BLUE', 1)
create table ColorDim (
CID int,
Color int)
insert into ColorDim (CID, Color) values (1, 'RED')
insert into ColorDim (CID, Color) values (2, 'WHITE')
insert into ColorDim (CID, Color) values (3, 'BLUE')
FactTable 和 ColorDim 在 FactTable.Color = ColorDim.Color 上连接。在立方体中,应该有一个称为“爱国”的度量,它计算对象 ID,包括红色、白色或蓝色(至少一种颜色)。所需的输出如下:
- 浏览立方体时,如果用户拉入爱国度量(不拉任何维度),则显示的总数应为 2,因为有 2 个 ID(即 1 和 3),其中至少包含三种颜色中的一种。请注意,ID 1 应该为总爱国值贡献 1,即使它有两种颜色。
如果用户按颜色维度浏览爱国度量,他们应该看到如下表。请注意,ID 1 对 RED 计数贡献 1,对 BLUE 计数贡献 1。
+--------+------------+
| 颜色 | 爱国 |
+--------+------------+
| 红色 | 2 |
| 白色 | 1 |
| 蓝色 | 2 |
+--------+------------+
(我尝试使用这个网络应用程序创建一个表格,但间距似乎不正确。希望它的可读性足以理解。)
我确信这是一个非常基本的多维数据集设计情况,但是我以前没有使用多维数据集,而且我使用的度量通常是简单的列 SUM 或列 SUM 的乘积等。任何帮助都会不胜感激。
(如果相关,我将在 MS SQL Server 2008 中运行构建事实/维度表的 SQL 查询,我将在 MS Visual Studio 2008 中设计多维数据集本身。)