来自Display rows where foreign key is present in PowerBI
的跟进我现在有以下查询通过连接检索数据并显示为表:
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"
输出:
实际上,通过DirectQuery获取数据以显示实时数据。但是,查询编辑器抛出了一条警告消息,说“此步骤导致DirectQuery模式不支持的查询”。谷歌搜索后,我发现问题和答案在具体情况下是独一无二的。
通过切换到“导入”模式解决了这个问题,但我不想走这条路;我宁愿更改查询以允许在使用DirectQuery正常播放时我想要做的事情。
谢谢。
答案 0 :(得分:4)
问题的原因似乎是RightJoin
。
PowerBI不支持直接查询任何类型的加入除了左连接。
请尝试以下操作:
let
Source = Sql.Database("server\database", "Mclaren"),
dbo_Capability = Table.NestedJoin(
Source{[Schema="dbo",Item="Information_Group"]}[Data],{"Capability"},
Source{[Schema="dbo",Item="Capability"]}[Data],{"ID"},
"NewColumn",
JoinKind.LeftOuter
),
#"Removed Columns" = Table.RemoveColumns(dbo_Capability,{"NewColumn"})
in
#"Removed Columns"
同样,我认为没有理由删除" NewColumn"。
如果两个表没有相同的列,您也可以找到有用的方法:
let
Source = Sql.Database("server\database", "Mclaren"),
dbo_Capability = Table.Join(
Source{[Schema="dbo",Item="Information_Group"]}[Data],{"Capability"},
Source{[Schema="dbo",Item="Capability"]}[Data],{"ID"},
JoinKind.LeftOuter
)
in
dbo_Capability
结果表与在SQL中使用LEFT JOIN
相同。