显示 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 中实现此目的的一种方法是使用 FILTER
和 CONTAINS
:
创建一个 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
这充当过滤器。
我有两个 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 中实现此目的的一种方法是使用 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])
)
结果如下:
您只需将 "ID" 上的 "Capability"-table 与 "Capability" 上的 "Information Group"-table 进行合并JoinKind.Inner:http://radacad.com/how-to-change-joining-types-in-power-bi-and-power-query 这充当过滤器。