Excel和使用桥表的多值维度

时间:2014-05-10 10:35:35

标签: excel data-warehouse

我查询数据库数据库(关系数据库),该数据库使用桥表来建模多值维度。我试图从Excel查询它,但我得到错误的结果。

这就是我的所作所为:

Datawarehouse:基本上有用户,每个用户可以说一种或多种语言 - 多值维度。在下面的SQL中,有会说英语的Johnny和会说英语,法语,西班牙语和意大利语的Cathleen。

create table dbo.Dimension_Languages(
    LanguageID int primary key
    ,LanguageName varchar(256)
    --,LanguageGradeComment varchar(max)
);
go

create table dbo.Dimension_LanguageBridge1(
    LanguageGroupID int primary key
);
go

create table dbo.Dimension_LanguageBridge2(
    LanguageGroupID int foreign key references dbo.Dimension_LanguageBridge1(LanguageGroupID)
    ,LanguageID int foreign key references dbo.Dimension_Languages(LanguageID)
);
go

create table dbo.Dimension_User(
    UserID int primary key
    ,UserName varchar(256)
);
go

create table dbo.Fact_User(
    UserID int foreign key references dbo.Dimension_User(UserID)
    ,LanguageGroupID int foreign key references dbo.Dimension_LanguageBridge1(LanguageGroupID)
);
go

insert into dbo.Dimension_Languages values(1, 'English');
insert into dbo.Dimension_Languages values(2, 'French');
insert into dbo.Dimension_Languages values(3, 'Spanish');
insert into dbo.Dimension_Languages values(4, 'Italian');

insert into dbo.Dimension_User values(1, 'Johnny');
insert into dbo.Dimension_LanguageBridge1 values(1);
insert into dbo.Dimension_LanguageBridge2 values(1, 1);
insert into dbo.Fact_User values(1, 1);

insert into dbo.Dimension_User values(2, 'Cathleen');
insert into dbo.Dimension_LanguageBridge1 values(2);
insert into dbo.Dimension_LanguageBridge2 values(2, 1);
insert into dbo.Dimension_LanguageBridge2 values(2, 2);
insert into dbo.Dimension_LanguageBridge2 values(2, 3);
insert into dbo.Dimension_LanguageBridge2 values(2, 4);
insert into dbo.Fact_User values(2, 2);

在Excel 2013中,我选择数据/来自其他来源/来自SQL Server / ... /我选择上面的所有表格/我选择创建数据透视表。我将UserName列添加到数据透视表行,将LanguageName添加到过滤器中。我在过滤器中选择法语,Excel显示了Cathleen和Johnny,但Johnny不会说法语。我希望数据透视表只显示Cathleen,因为只有Cathleen说法语。

enter image description here

非常感谢

1 个答案:

答案 0 :(得分:0)

在我看来,数据透视表以某种方式执行交叉连接,因为语言和用户维度之间没有链接(Fk约束..),链接在事实表中,它是一个提示直接回答,这是我从你的问题中理解的,祝你好运。