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 を使用して、同じことを実現できます。

パラメーター化された接続を使用してレポートを作成する

  1. サーバーへの SQL Server 接続を作成します。 下の例では、localhost の ReportServer という名前のデータベースに接続し、ExecutionLog からデータをプルしています。

    Connect to the SQL Server database

    この時点での M クエリは次のようになります。

    let
        Source = Sql.Database("localhost", "ReportServer"),
        dbo_ExecutionLog3 = Source{[Schema="dbo",Item="ExecutionLog3"]}[Data]
    in
        dbo_ExecutionLog3
    
  2. Power Query エディターのリボンで [パラメーターの管理] を選択します。

    Select Manage Parameters

  3. サーバー名とデータベース名のパラメーターを作成します。

    Manage Parameters, set servername and databasename.

  4. 最初の接続のクエリを編集し、データベースとサーバー名をマップします。

    Map the Server and Database name

    クエリは次のようになります。

    let
        Source = Sql.Database(ServerName, Databasename),
        dbo_ExecutionLog3 = Source{[Schema="dbo",Item="ExecutionLog3"]}[Data]
    in
        dbo_ExecutionLog3
    
    1. そのレポートをサーバーに発行します。 この例では、レポートの名前は executionlogparameter です。 次の図は、データソース管理ページの例です。

    The data source management page.

PowerShell ツールを使用してパラメーターを更新する

  1. PowerShell を開き、https://github.com/microsoft/ReportingServicesTools の説明に従って、最新の Reporting Services ツールをインストールします。

  2. レポートのパラメーターを取得するには、次の PowerShell 呼び出しを使用して、新しい REST DataModelParameters API を使用します。

    Get-RsRestItemDataModelParameters '/executionlogparameter'
    
        Name         Value
        ----         -----
        ServerName   localhost
        Databasename ReportServer
    
  3. この呼び出しの結果を変数に保存します。

    $parameters = Get-RsRestItemDataModelParameters '/executionlogparameter'
    
  4. ディクショナリにマップして、パラメーター値にアクセスします。

    $parameterdictionary = @{}
    foreach ($parameter in $parameters) { $parameterdictionary.Add($parameter.Name, $parameter); }
    
    
  5. 変更する必要がある値で、この変数を更新します。

  6. 目的のパラメーターの値を更新します。

    $parameterdictionary[“ServerName”].Value = 'myproductionserver'
    $parameterdictionary[“Databasename”].Value = 'myproductiondatabase'
    
  7. 更新された値でコマンドレット Set-RsRestItemDataModelParameters を使用してサーバーの値を更新できます。

    Set-RsRestItemDataModelParameters -RsItem '/executionlogparameter' -DataModelParameters $parameters
    $parameterdictionary.Values
    
  8. パラメーターが更新されると、そのパラメーターにバインドされているすべてのデータ ソースがサーバーによって更新されます。 [データ ソースの編集] ダイアログ ボックスに戻ると、更新されたサーバーとデータベースに対して資格情報を設定できるはずです。

    Set credentials for the updated server and database.

他にわからないことがある場合は、 Power BI コミュニティで質問してみてください