在DirectQuery模式下不支持查询(PowerBI / PowerQuery)

5

关于在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完美协作。

谢谢。


1
如果您提供一个 [mcve],那么帮助您将会更加容易和愉快。请问您能否编辑问题并包含一些 DDL 和 DML 以最小化重现问题? - Jeroen
Information_GroupCapability 这两个对象的类型是什么? - Eugene
另外,为什么要删除生成的“NewColumn”? - Eugene
1个回答

5
看起来问题的原因是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相同。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接