显示行,其中外键存在于PowerBI(Display rows where foreign key

2019-09-28 00:26发布

我有两个表。 第一个表被称为能力:

第二个表被称为信息组:

有些ID的在能力表已在信息组表(即在能力 )被引用

目前,查询权力的能力视图仪表盘是:

= Source{[Schema="dbo",Item="Capability"]}[Data]

我想说明的能力表中唯一行,其中有在信息组表至少一个参考。

换句话说,由于能力ID 10不在信息组引用,则能力表应该排除在输出该行(即仅示出了1至9)。

| ------------------------------------------------- ----------------- |

努力迄今取得:

我已成功地选择不同的能力ID从这个查询“的信息组表S: = Table.SelectColumns(Table.Distinct(Source{[Schema="dbo",Item="Information_Group"]}[Data], "Capability"), "Capability")其产生这样的:

我想这样做下一步是检查ID的能力表的列对上述列表中,并仅显示其中的值被包含在表中的行。 事情是这样的:

= Table.SelectRows(Table.Contains(Source{[Schema="dbo",Item="Capability"]}[Data], each[ID] is contained in the list))

我已阅读了MSDN上使用Table.Contains ,但我不能弥补缺口去我想去的地方。

请让我知道是否需要澄清。 谢谢。

[编辑]回答这个问题让我很满意:

let
    Source = Sql.Database("server\database", "Mclaren"),
    dbo_Capability = Table.NestedJoin(
        Source{[Schema="dbo",Item="Capability"]}[Data],{"ID"},
        Source{[Schema="dbo",Item="Information_Group"]}[Data],{"Capability"},        
        "NewColumn",
        JoinKind.RightOuter
    ),
    #"Removed Columns" = Table.RemoveColumns(dbo_Capability,{"NewColumn"})
in
    #"Removed Columns"

Answer 1:

您只需用“信息集团” -表上的“能力”与JoinKind.Inner执行你的“能力”的合并的“ID” -表: http://radacad.com/how-to-change-joining -types-在功率-BI-和功耗查询这作为一个过滤器。



Answer 2:

在DAX实现这样的方法是创建一个使用表FILTERCONTAINS

Filtered Capability = 
FILTER(
    Capability,
    CONTAINS(
        'Information Group',
        'Information Group'[Capability],
        Capability[ID]
    )
)

或者用一个更简单的语法IN这是自引入2016年11月 :

Filtered Capability = 
FILTER(
    Capability,
    Capability[ID] IN VALUES('Information Group'[Capability])
)

结果如下:



文章来源: Display rows where foreign key is present in PowerBI