【问题标题】:Set report data source and credentials on Power BI Report Server through REST API to establish a scheduled refresh通过 REST API 在 Power BI 报表服务器上设置报表数据源和凭据以建立计划刷新
【发布时间】:2020-02-25 14:28:52
【问题描述】:

我的任务如下:使用 Power BI 报表服务器 (PBIRS) REST API,上传嵌入式报表(嵌入式意味着数据模型集成在报表本身中 - 从 SQL Server 数据库简单导入,因此没有实时连接或 DirectQuery 等)到 PBIRS,设置凭据(ConnectionString、Windows 身份验证用户名和密码)以访问数据源(数据库)并设置每日计划刷新。

使用 Powershell 脚本,我可以毫无问题地上传报告,但是当我尝试将凭据设置为数据源时会出现复杂情况。这是我目前必须完成的代码:

$payload0 = 
'
{
    "Name": "Data Source test",
    "Description": "string",
    "Path": "/Valid/Path",
    "Type": "DataSource",
    "Hidden": false,
    "Size": 0,
    "ModifiedBy": "string",
    "ModifiedDate": "2020-01-13T15:51:04Z",
    "CreatedBy": "string",
    "CreatedDate": "2020-01-13T15:51:04Z",
    "IsFavorite": false,
    "IsEnabled": true,
    "ConnectionString": "valid.connection\\string",
    "DataModelDataSource": {
      "AuthType": "Windows",
      "SupportedAuthTypes": [
        "Windows"
      ],
      "Kind": "SQL",
      "ModelConnectionName": "string",
      "Secret": "",
      "Type": "Import ",
      "Username": "myUserName"
    },
    "DataSourceSubType": "DataModel",
    "DataSourceType": "SQL",
    "IsOriginalConnectionStringExpressionBased": false,
    "IsConnectionStringOverridden": false,
    "CredentialRetrieval": "prompt",
    "CredentialsByUser": {
      "DisplayText": "someText",
      "UseAsWindowsCredentials": true
    },
    "CredentialsInServer": {
      "UserName": "myUserName",
      "Password": "myPassword",
      "UseAsWindowsCredentials": true,
      "ImpersonateAuthenticatedUser": true
    },
    "IsReference": false
  }
'

$restApiUri = $ReportPortalUri + "/api/v2.0/DataSources"

Invoke-RestMethod -Uri $restApiUri -Method Post -Body $payload0 -ContentType "application/json" -UseDefaultCredentials -UseBasicParsing -Verbose

运行代码后,我得到一个201 Created 响应 JSON,它指示数据源及其访问凭据的成功创建。如果我查看 PBIRS 报告的 Manage 窗格我看不到对数据源进行任何更改。

我的下一步是手动设置凭据,方法是在报表服务器上输入我的用户名和密码,然后执行以下代码来设置计划刷新:

$payload1 = 
'
{
    "ParameterValues":[ 

    ],
    "Description":"testSchedule",
    "CatalogItemPath":"/Valid/Path",
    "EventType":"DataModelRefresh",
    "Schedule":{ 
        "Definition":{ 
            "EndDate":"0001-01-01T00:00:00Z",
            "StartDateTime":"2019-01-15T02:00:00Z",
            "EndDateSpecified":false,
            "Recurrence":{ 
                "DailyRecurrence": { 
                "DaysInterval":1
                }
            }
        }
    }
}
'

$restApiUri = $ReportPortalUri + "/api/v2.0/CacheRefreshPlans"

Invoke-RestMethod -Uri $restApiUri -Method Post -Body $payload1 -ContentType "application/json" -UseDefaultCredentials -UseBasicParsing -Verbose

如果我事先手动设置了数据源的凭据,则运行此代码会成功创建计划刷新。

简而言之,我的问题是:如何使用 PBIRS REST API 设置数据源(由有效 ConnectionString 定义的 SQL Server 连接)的凭据(Windows 身份验证和用户名/密码)?

任何帮助将不胜感激!

【问题讨论】:

    标签: powershell rest power-bi-report-server


    【解决方案1】:

    事实证明,还有另一种方法可以完成这项任务,即完全使用不同的 API。使用ReportingServicesTools 方法,我们可以将报告上传到 PBIRS 按以下方式设置其数据源凭据:

    # create PBIRS session
    Write-Output "Creating a session to the Report Server $ReportPortalUri"
    $session = New-RsRestSession -ReportPortalUri $ReportPortalUri        
    
    # upload report with overwrite
    write-output "Upload report with overwrite"
    Write-RsRestCatalogItem -WebSession $session -Path $FilePath -RsFolder $RsFolder -Description $Description -Overwrite 
    
    # get report name
    $reportName = [System.IO.Path]::GetFileNameWithoutExtension($FilePath)
    
    # get existing data source properties
    $dataSource = Get-RsRestItemDataSource -WebSession $session -RsItem "$RsFolder/$reportName"
    
    # setting up data source credentials
    $dataSource.DataModelDataSource.AuthType = "Windows"
    $dataSource.CredentialRetrieval = "Store"
    $dataSource.DataModelDataSource.UserName = "myUsername"
    $dataSource.DataModelDataSource.Secret = "myPassword"
    
    # applying credentials
    Set-RsRestItemDataSource -WebSession $session -RsItem "$RsFolder/$reportName" -RsItemType "PowerBIReport" -DataSources $dataSource
    

    【讨论】:

      猜你喜欢
      • 2019-09-15
      • 2021-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多