Excel 和使用桥接表的多值维度

Posted

技术标签:

【中文标题】Excel 和使用桥接表的多值维度【英文标题】:Excel and a multivalued dimension using a bridge table 【发布时间】:2014-05-10 10:35:35 【问题描述】:

我查询了一个使用桥接表对多值维度建模的数据仓库数据库(关系数据库)。我试图从 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 会说法语。

非常感谢

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于Excel 和使用桥接表的多值维度的主要内容,如果未能解决你的问题,请参考以下文章

sql多值维度

iPhone中的多值选择/取消选择

Java中的多值哈希表

更新 Access 中的多值字段

从 Eureka 表单的多值部分获取表单值

如何更新 ms access vba 中的多值组合框?