显示PowerBI

时间:2017-02-28 00:09:12

标签: powerbi powerquery

我有两张桌子。第一个表叫做Capability: Capability Table

第二个表称为信息组: Information Group

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

目前,为功能视图启用仪表板的查询是:

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

我想只在Capability表中显示信息组表中至少有一个引用的行。

换句话说,由于信息组中未引用功能ID 10,因此功能表应排除输出中的该行(即仅显示1到9)。 Desired output

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

到目前为止所做的努力:

我已设法通过此查询在信息组表中选择不同的功能ID= Table.SelectColumns(Table.Distinct(Source{[Schema="dbo",Item="Information_Group"]}[Data], "Capability"), "Capability"),它产生了这个:

Output

我想要做的下一步是根据上面的列表检查Capability表的ID列,并仅显示表中包含值的行。像这样:

= 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"

2 个答案:

答案 0 :(得分:0)

在DAX中实现这一目标的一种方法是使用FILTERCONTAINS创建一个表:

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])
)

结果如下:

dax result

答案 1 :(得分:0)

您只需要执行"功能" -table on" ID"使用"信息组" -table on" Capability"使用JoinKind.Inner:http://radacad.com/how-to-change-joining-types-in-power-bi-and-power-query 这可以作为过滤器。

相关问题