我有两张桌子。第一个表叫做Capability:
第二个表称为信息组:
功能表中的某些ID
已在信息组表中引用(即在功能列中)
目前,为功能视图启用仪表板的查询是:
= Source{[Schema="dbo",Item="Capability"]}[Data]
我想只在Capability表中显示信息组表中至少有一个引用的行。
换句话说,由于信息组中未引用功能ID
10,因此功能表应排除输出中的该行(即仅显示1到9)。
| ---------------------------------------------- -------------------- |
到目前为止所做的努力:
我已设法通过此查询在信息组表中选择不同的功能ID
:
= Table.SelectColumns(Table.Distinct(Source{[Schema="dbo",Item="Information_Group"]}[Data], "Capability"), "Capability")
,它产生了这个:
我想要做的下一步是根据上面的列表检查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"
答案 0 :(得分:0)
在DAX中实现这一目标的一种方法是使用FILTER
和CONTAINS
创建一个表:
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])
)
结果如下:
答案 1 :(得分:0)
您只需要执行"功能" -table on" ID"使用"信息组" -table on" Capability"使用JoinKind.Inner:http://radacad.com/how-to-change-joining-types-in-power-bi-and-power-query 这可以作为过滤器。