2017-03-01 441 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