在 PowerShell 報表中使用 PowerShell 變更資料來源連接字串 - Power BI 報表伺服器
我們啟用了更新 Power BI 報表連線的功能,以進行 DirectQuery 和重新整理。
重要
這也是舊版設定方式的重大變更。 如果您正在使用 2020 年 10 月版以前的 Power BI 報表伺服器,請參閱在 Power BI 報表中使用 PowerShell 變更資料來源連接字串 - 2020 年 10 月版以前的 Power BI 報表伺服器
必要條件
- 下載 Power BI 報表伺服器和適用於 Power BI 報表伺服器的 Power BI Desktop。
- 已針對報表伺服器最佳化的 Power BI Desktop 2020 年 10 月或更新版本儲存的報表,已啟用 [增強型資料集中繼資料]。
- 使用參數化連線的報表。 只有具有參數化連線和資料庫的報表才能在發佈後更新。
- 此範例使用 Reporting Services PowerShell 工具。 您可以使用新的 REST API 達到相同的效果。
使用參數化連線建立報表
建立伺服器的 SQL Server 連線。 在以下範例中,我們要連線到 localhost 的 ReportServer 資料庫,並從 ExecutionLog 提取資料。
此時的 M 查詢如下:
let Source = Sql.Database("localhost", "ReportServer"), dbo_ExecutionLog3 = Source{[Schema="dbo",Item="ExecutionLog3"]}[Data] in dbo_ExecutionLog3
選取 Power Query 編輯器功能區中的 [管理參數]。
建立 servername 和 databasename 的參數。
編輯第一個連線的查詢,然後對應資料庫和 servername。
現在查詢看起來如下:
let Source = Sql.Database(ServerName, Databasename), dbo_ExecutionLog3 = Source{[Schema="dbo",Item="ExecutionLog3"]}[Data] in dbo_ExecutionLog3
- 將該報表發佈至伺服器。 在此範例中,報告名為 executionlogparameter。 下圖是資料來源管理頁面的範例。
使用 PowerShell 工具更新參數
請遵循 https://github.com/microsoft/ReportingServicesTools 的指示開啟 PowerShell 並安裝最新的 Reporting Services 工具。
若要取得報表的參數,請使用下列 PowerShell 呼叫以利用新的 REST DataModelParameters API:
Get-RsRestItemDataModelParameters '/executionlogparameter' Name Value ---- ----- ServerName localhost Databasename ReportServer
我們會將此呼叫的結果儲存在變數中:
$parameters = Get-RsRestItemDataModelParameters '/executionlogparameter'
對應至字典以存取參數值。
$parameterdictionary = @{} foreach ($parameter in $parameters) { $parameterdictionary.Add($parameter.Name, $parameter); }
這個變數會使用我們必須變更的值予以更新。
更新所需參數的值:
$parameterdictionary[“ServerName”].Value = 'myproductionserver' $parameterdictionary[“Databasename”].Value = 'myproductiondatabase'
使用更新後的值,我們即可使用 Commandlet
Set-RsRestItemDataModelParameters
來更新伺服器中的值:Set-RsRestItemDataModelParameters -RsItem '/executionlogparameter' -DataModelParameters $parameters $parameterdictionary.Values
更新參數之後,伺服器就會更新所有曾繫結至參數的資料來源。 回到 [編輯資料來源] 對話方塊,您應該能夠為更新後的伺服器和資料庫設定認證。
相關內容
更多問題嗎? 嘗試在 Power BI 社群提問