次の方法で共有


PowerShell を使用して Power BI レポートのデータ ソース接続文字列を変更する - Power BI Report Server

DirectQuery の Power BI レポートの接続を更新する機能とリフレッシュ機能を有効化します。

Important

これは、以前のリリースでこれを設定する方法に関する破壊的変更でもあります。

[前提条件]

  • Power BI Report Server と Power BI Report Server 用 Power BI Desktop の最新リリースをダウンロードします。
  • レポート サーバー用に最適化された Power BI Desktop で保存され、 拡張 DataSet メタデータが 有効になっているレポート。
  • パラメーター化された接続を使用するレポート。 発行後に更新できるのは、パラメーター化された接続とデータベースを含むレポートのみです。
  • この例では、Reporting Services PowerShell ツールを使用します。 新しい REST API を使用して同じことができます。

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

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

    SQL Server データベースへの接続を示すスクリーンショット。

    この時点での M クエリの外観を次に示します。

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

    [パラメーターの管理] の選択を示すスクリーンショット。

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

    パラメーターの管理、サーバー名とデータベース名の設定を示すスクリーンショット。

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

    [サーバーとデータベース名のマップ] を示すスクリーンショット。

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

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

    データ ソース管理ページ。

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. パラメーターが更新されると、サーバーはパラメーターにバインドされたすべてのデータ ソースを更新します。 [ データ ソースの編集 ] ダイアログ ボックスに戻ると、更新されたサーバーとデータベースの資格情報を設定できるようになります。

    更新されたサーバーとデータベースの資格情報の設定を示すスクリーンショット。

他に質問はありますか? Power BI コミュニティで質問してみてください