代码之家  ›  专栏  ›  技术社区  ›  vestland

当两张桌子之间建立了关系时,在幕后发生了什么?

  •  2
  • vestland  · 技术社区  · 7 年前

    如果Power BI中有多个表,可以通过将列从一个表拖到另一个表来建立它们之间的关系,如下所示:

    enter image description here

    您可以通过单击发生线来编辑该关系:

    enter image description here

    # Table1
    A,B
    1,abc
    2,def
    3,ghi
    4,jkl
    
    # Table2
    A,C
    1,abc
    1,def
    2,ghi
    3,ghit
    

    这很好,因为表1中的A列包含唯一的值,可以用作主键。现在你可以去 Report tab ,设置两个表,通过直接单击表1中的A下方或引入切片器,随心所欲地切片和骰子:

    enter image description here

    没有 Relationships 然后回到 Report Home > Manage Relationships 明白我的意思:

    enter image description here

    'There are no relationships defined yet.' 但你可以 仍然 像以前一样,通过在另一个表中进行选择来子集一个表( 编辑: 这句话在拉多的回答中被证明是错误的。我 知道您可以高亮显示切片器并选择 Format > Edit Interactions 并取消选择与切片器关联的表。但我仍然对整件事感到困惑。

    真正地 由表的内容定义-因为表中存在潜在主键(无论是自然主键还是合成主键),所以可以使用SQL、dplyr动词或任何其他形式的查询技术来查询表中的相关值。你真的不需要一个明确定义的关系吗?

    或者换句话说,建立一个Power双表关系是否有一个SQL等价物?也许像 the following :

    CREATE TABLE Persons (
        ID int NOT NULL,
        LastName varchar(255) NOT NULL,
        FirstName varchar(255),
        Age int,
        PRIMARY KEY (ID)
    );
    

    非常 困惑的。而到目前为止,google只是增加了混乱。所以,谢谢你的真知灼见!

    1 回复  |  直到 7 年前
        1
  •  1
  •   RADO    7 年前

    您的语句“但是您仍然可以通过像以前一样在另一个表中进行选择来子集一个表”是 对的。这是一个关键问题。

    关系支持在powerbi中传播过滤器上下文。这是一个很有意思的短语,如果你打算使用Power-BI,你必须了解它的含义。这是最重要的概念。

    要理解我的意思,您需要编写DAX度量并尝试使用表来操纵它们。当你有或没有关系的时候,你会立刻看到区别。

    整个系统的工作原理(简化):

    SELECT SUM(Sales.Amount)
    FROM Sales
    LEFT OUTER JOIN Customer
    ON Sales.Customer_Key = Customer.Customer_Key
    

    由方向关系是有点复杂,但概念上相似。

    总的来说,当您在表之间创建关系时,您会告诉PowerBI引擎如何连接这些表。然后,引擎还添加了一些优化来加速查询。

    请注意,在PowerBI中不必严格地在表之间建立关系。您可以使用DAX(以编程方式)来模拟相同的行为,但是这种“虚拟”关系更为复杂,而且速度可能会慢得多。

        2
  •  1
  •   philipxy    7 年前

    在RM(关系模型)中&ERM(实体关系模型)表表示关系/关联。因此, 关系 关系

    在伪ERM方法中,FKs(外键)被错误地称为“关系”。一个sqlfk约束表示子线程在其他地方显示为PK(主键)或UNIQUE。DBMS使用它们来禁止无效的更新;优化查询。

    权力BI“关系”不是FKs。它们是关于如何构建查询的说明。

    当有一个FK,我们经常想加入它。所以当有一个FK时,我们经常想要一个Power-BI关系。

    Create and manage relationships in Power BI Desktop
    (另请参见开发者的下载PDF链接。)

    附言 (特征)谓词

    Foreign keys are not needed to join tables!
    Is there any rule of thumb to construct SQL query from a human-readable description?

    附言 交叉连接是带有真条件(或者在某些DBMS中没有条件)的内部连接。是否有一个“关系”又名FK是无关紧要的。如果条件是FK=PK或除TRUE以外的任何其他条件,则它不是交叉连接;否则,不管表之间是否有FK,都是交叉连接。只是我们经常希望PK=FK处于某个条件&工具can&在默认条件下使用FK。

    CROSS JOIN vs INNER JOIN in SQL Server 2008

        3
  •  1
  •   Ken Evans    7 年前

    简单的答案是 声明

    许多好心人画ER图,似乎忘记或不知道他们的ER图实际上是“语言中陈述的图片”

    问题是含糊不清。

    所以,隐藏的是语言!

    简单的图表 ER Diagram 1

    The statements

    更复杂的图表

    Student lives at Address

    从中导出图表的语句。

    enter image description here

    推荐文章