【发布时间】:2019-03-22 12:15:36
【问题描述】:
这个问题不限于 Power BI,但它会帮助我解释我的问题。
如果您在 Power BI 中有多个表,则可以通过将列从一个表拖到另一个表来建立它们之间的关系,如下所示:
您可以通过单击出现的行来编辑该关系:
顺便说一下,这是两个表的结构:
# Table1
A,B
1,abc
2,def
3,ghi
4,jkl
# Table2
A,C
1,abc
1,def
2,ghi
3,ghit
这很好用,因为 Table1 中的 A 列包含唯一值并且可以用作主键。现在您可以前往Report tab,设置两个表,然后直接单击表 1 中的 A 下方或引入切片器,按照您的心愿进行切片和切块:
但问题是您可以在不建立表之间关系的情况下 做到这一点。删除Relationships下的关系,回到Report,选择Home > Manage Relationships看看我的意思:
正如对话框所说的 'There are no relationships defined yet.' 但是您可以仍然像以前一样通过在另一个表中进行选择来对一个表进行子集化(编辑:该语句已被证明是错误的在 RADO 的回答中)。我确实知道您可以突出显示切片器并选择Format > Edit Interactions 并取消选择与切片器关联的表。但我仍然对整个事情感到困惑。
那么,这里是否发生了一些我不知道的事情?或者表之间的关系真的是由表的内容定义的 - 因为存在潜在主键(无论是自然的还是合成的)跨表的相关值的存在使得可以使用 SQL、dplyr 动词或任何其他形式的查询技术来查询它们。而且您真的不需要明确定义的关系吗?
或者换一种说法,Power BI表关系的建立是否有SQL等价物?或许像the following:
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
PRIMARY KEY (ID)
);
对不起,如果我在这里有点啰嗦,但我只是非常感到困惑。到目前为止,谷歌搜索只会增加混乱。因此,感谢您提供任何见解!
【问题讨论】:
-
定义外键关系。不过,我不知道 PowerBI 是否真的改变了底层数据模型。
-
@GordonLinoff 感谢您的反馈!我在这里感到困惑的是
defining a foreign key relationship周围的细节。为了在表之间执行任何类型的查询,您真的需要定义这样的关系吗?例如左连接?关系数据的存在本身还不够吗? -
不,我不认为“表之间的关系真正由表的内容定义”。需要像您最初那样建立关系。我不知道 PowerBi,但它甚至可以运行“没有关系”的查询,即所谓的“交叉连接”。这些查询有时会派上用场(虽然对我来说并不经常),而且它们不需要外键。
-
您不需要指定
table1.col1是引用table2.col1的外键来连接这些列上的两个表,不。外键让数据库强制执行一致性。例如,您不能在table1中插入一个新行,其中col1值在table2的行中也不存在。 -
好问题,顺便说一句(不是一个愚蠢的问题)。也许有 PowerBi 经验的人可能会给你一个更好的答案。点赞。
标签: sql relational-database powerbi