本文介紹了將Power Query中的參數傳遞給T-SQL,但仍可編輯查詢的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
是否可以在T-SQL查詢中使用Power Query參數,但仍允許我像在鏈接圖像中那樣在”編輯設置”部分編輯源查詢?我知道您可以通過高級編輯器屏幕將參數插入,但這樣就很難對查詢進行額外的編輯。
本質上,我仍然希望在SQL查詢中使用該參數,但不會失去輕松進行編輯的能力。我在Power BI(臺式機)中使用Power Query。感謝您的幫助。
推薦答案
是的,這是可能的。
創建該查詢時,第一個應用的步驟(請參見屏幕截圖中的右窗格)將是如下所示的M代碼:
= Sql.Database("server", "db", [Query="SELECT * FROM ABC WHERE Date = [Parameter]"])
如果您有一個參數Param
,您可以將代碼編輯為動態的,如下所示:
= Sql.Database("server", "db", [Query="SELECT * FROM ABC WHERE Date = "&Text.From(Param)])
但是,PowerQuery可以進行自己的查詢折疊,這在許多情況下可能會更輕松、更高效。
如果在不使用SQL語句的情況下加載該表,則查詢應該如下所示:
let
Source = Sql.Database("server", "db"),
dbo_ABC = Source{[Schema="dbo",Item="ABC"]}[Data]
in
dbo_ABC
從那里您可以對Date
列應用篩選器(從下拉列表中選擇任何日期),這應該會產生如下所示的另一個步驟:
#"Filtered Rows" = Table.SelectRows(dbo_ABC, each ([Date] = #date(2019, 12, 31)))
在這里,您可以用Date參數替換您選擇的任何日期,因此現在整個查詢如下所示:
let
Source = Sql.Database("server", "db"),
dbo_ABC = Source{[Schema="dbo",Item="ABC"]}[Data],
#"Filtered Rows" = Table.SelectRows(dbo_ABC, each ([Date] = Param))
in
#"Filtered Rows"
(請確保Date
列和參數的數據類型相同,否則將出現錯誤。)
現在,右擊應用步驟中的最后一步,如并選擇‘View Native Query’,您將看到PowerQuery實際發送回服務器的生成的SQL代碼。它將如下所示(其中顯式編寫參數)。
select [_].[Col1],
[_].[Col2],
[_].[Col3],
[...]
from [dbo].[ABC] as [_]
where [_].[Date] = '2019-12-31' and [_].[Date] is not null
總之,關鍵是您可以在查詢編輯器中工作,而不是修改查詢字符串。
這篇關于將Power Query中的參數傳遞給T-SQL,但仍可編輯查詢的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,