DirectQuery (PowerBI / PowerQuery) 不支持查询

tay*_*fan 5 powerquery powerbi

显示 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 时仍然可以完成我想做的事情。

谢谢。

Eug*_*ene 5

看来问题的原因是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