tay*_*fan 5 powerquery 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"
Run Code Online (Sandbox Code Playgroud)
输出:

事实上,数据是通过 DirectQuery 获取的,以便显示实时数据。但是,查询编辑器抛出了一条警告消息,指出“此步骤会导致 DirectQuery 模式不支持的查询”。在谷歌上搜索后,我发现问题和答案在具体情况下都是独一无二的。
通过切换到“导入”模式可以解决该问题,但我不想走这条路;我宁愿更改查询,以便在使用 DirectQuery 时仍然可以完成我想做的事情。
谢谢。
看来问题的原因是RightJoin。PowerBI 不支持除 Left Join 之外的任何类型的直接查询。
尝试以下操作:
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"
Run Code Online (Sandbox Code Playgroud)
同样,我认为没有理由删除“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
Run Code Online (Sandbox Code Playgroud)
结果表将与 SQL 中使用的表相同LEFT JOIN。