显示 PowerBI 中存在外键的行

Display rows where foreign key is present in PowerBI

我有两个 table。第一个 table 称为 Capability:

第二个table叫做信息组:

能力 table 中的某些 ID 已在信息组 table 中引用(即在能力 中)

目前,为功能视图的仪表板提供支持的查询是:

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

我只想显示能力 table 中的行,其中信息组 table.[=23= 中至少有一个引用]

换句话说,由于信息组中未引用 Capability ID 10,因此 Capability table 应该在输出中排除该行(即仅显示 1 到 9)。

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

到目前为止所做的努力:

我已经通过此查询 select 区分信息组 table 中的能力 ID= Table.SelectColumns(Table.Distinct(Source{[Schema="dbo",Item="Information_Group"]}[Data], "Capability"), "Capability"),产生这个:

我想做的下一步是根据上面的列表检查能力 table 的 ID 列,并仅显示值包含在 [=60] 中的行=].像这样:

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

我已经阅读了有关使用 Table.Contains 的 MSDN,但我无法弥合差距以到达我想要的位置。

如果需要澄清,请告诉我。谢谢。

[编辑] 我满意的回答:

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"

在 DAX 中实现此目的的一种方法是使用 FILTERCONTAINS:

创建一个 table
Filtered Capability = 
FILTER(
    Capability,
    CONTAINS(
        'Information Group',
        'Information Group'[Capability],
        Capability[ID]
    )
)

或者使用自 Nov 2016:

以来引入的 IN 更简单的语法
Filtered Capability = 
FILTER(
    Capability,
    Capability[ID] IN VALUES('Information Group'[Capability])
)

结果如下:

您只需将 "ID" 上的 "Capability"-table 与 "Capability" 上的 "Information Group"-table 进行合并JoinKind.Inner:http://radacad.com/how-to-change-joining-types-in-power-bi-and-power-query 这充当过滤器。