2017-03-01 435 views
1

甲从Display rows where foreign key is present in PowerBI查询在DirectQuery(PowerBI/PowerQuery)不支持

跟进我现在有以下查询,其经由连接而显示为一个表中检索数据:

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

如果您向我们提供[mcve],则帮助起来会更容易,更愉快。你能否编辑这个问题并且包含一些DDL和DML来最小化重现问题? – Jeroen

+0

什么类型都是对象,* Information_Group *和* Capability *? – Eugene

+0

另外,为什么要删除生成的“NewColumn”? – Eugene

回答

2

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