DirectQuery(PowerBI / PowerQuery)不支持查询

时间:2017-03-01 01:27:29

标签: powerbi powerquery

来自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"

输出: Output

实际上,通过DirectQuery获取数据以显示实时数据。但是,查询编辑器抛出了一条警告消息,说“此步骤导致DirectQuery模式不支持的查询”。谷歌搜索后,我发现问题和答案在具体情况下是独一无二的。

通过切换到“导入”模式解决了这个问题,但我不想走这条路;我宁愿更改查询以允许在使用DirectQuery正常播放时我想要做的事情。

谢谢。

1 个答案:

答案 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相同。