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