PowerShell を使って Power BI レポートのデータ ソース接続文字列を変更する - Power BI Report Server
DirectQuery と更新のために Power BI レポートの接続を更新する機能を有効にします。
重要
これは、以前のリリースでのこの設定方法に対する破壊的変更でもあります。 Power BI Report Server の 2020 年 10 月より前のバージョンを使用している場合は、「PowerShell を使って Power BI レポートのデータ ソース接続文字列を変更する - 2020 年 10 月より前の Power BI Report Server」を参照してください
前提条件
- Power BI Report Server と Power BI Report Server 向け Power BI Desktop の最新リリースをダウンロードします。
- 拡張データセット メタデータが有効になっている、Report Server 向けに最適化された 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 エディターのリボンで [パラメーターの管理] を選択します。
サーバー名とデータベース名のパラメーターを作成します。
最初の接続のクエリを編集し、データベースとサーバー名をマップします。
クエリは次のようになります。
let Source = Sql.Database(ServerName, Databasename), dbo_ExecutionLog3 = Source{[Schema="dbo",Item="ExecutionLog3"]}[Data] in dbo_ExecutionLog3
- そのレポートをサーバーに発行します。 この例では、レポートの名前は executionlogparameter です。 次の図は、データソース管理ページの例です。
PowerShell ツールを使用してパラメーターを更新する
PowerShell を開き、https://github.com/microsoft/ReportingServicesTools の説明に従って、最新の 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'
更新された値でコマンドレット
Set-RsRestItemDataModelParameters
を使用してサーバーの値を更新できます。Set-RsRestItemDataModelParameters -RsItem '/executionlogparameter' -DataModelParameters $parameters $parameterdictionary.Values
パラメーターが更新されると、そのパラメーターにバインドされているすべてのデータ ソースがサーバーによって更新されます。 [データ ソースの編集] ダイアログ ボックスに戻ると、更新されたサーバーとデータベースに対して資格情報を設定できるはずです。
関連するコンテンツ
他にわからないことがある場合は、 Power BI コミュニティで質問してみてください。