Power Bi 嵌入分页报告

问题描述 投票:0回答:1

我在设置 Python 应用程序以嵌入分页 Power BI 报告时遇到困难。我可以让它在普通报告/视觉效果上正常工作,但在分页报告上却不能。

有人有一个用于在应用程序内呈现分页报告的 python 代码示例吗?

我一直在浏览网络和文档,我一定是缺少一些简单的配置。

def get_embed_params_for_multiple_reports(self, workspace_id, report_ids, additional_dataset_ids=None):
        '''Get embed params for multiple reports for a single workspace
    Args:
        workspace_id (str): Workspace Id
        report_ids (list): Report Ids
        additional_dataset_ids (list, optional): Dataset Ids which are different than the ones bound to the reports. Defaults to None.

    Returns:
        EmbedConfig: Embed token and Embed URLs
    '''

    # Note: This method is an example and is not consumed in this sample app

    dataset_ids = []

    # To store multiple report info
    reports = []

    for report_id in report_ids:
        report_url = f'https://api.powerbi.com/v1.0/myorg/groups/{workspace_id}/reports/{report_id}'
        api_response = requests.get(report_url, headers=self.get_request_header())

        if api_response.status_code != 200:
            abort(api_response.status_code, description=f'Error while retrieving Embed URL\n{api_response.reason}:\t{api_response.text}\nRequestId:\t{api_response.headers.get("RequestId")}')

        api_response = json.loads(api_response.text)
        report_config = ReportConfig(api_response['id'], api_response['name'], api_response['embedUrl'])
        reports.append(report_config.__dict__)
        dataset_ids.append(api_response['datasetId'])

    # Append additional dataset to the list to achieve dynamic binding later
    if additional_dataset_ids is not None:
        dataset_ids.extend(additional_dataset_ids)

    embed_token = self.get_embed_token_for_multiple_reports_single_workspace(report_ids, dataset_ids, workspace_id)
    embed_config = EmbedConfig(embed_token.tokenId, embed_token.token, embed_token.tokenExpiry, reports)
    return json.dumps(embed_config.__dict__)



def get_embed_token_for_multiple_reports_multiple_workspaces(self, report_ids, dataset_ids, target_workspace_ids=None):
        '''Get Embed token for multiple reports, multiple datasets, and optional target workspaces

    Args:
        report_ids (list): Report Ids
        dataset_ids (list): Dataset Ids
        target_workspace_ids (list, optional): Workspace Ids. Defaults to None.

    Returns:
        EmbedToken: Embed token
    '''

    # Note: This method is an example and is not consumed in this sample app

    request_body = EmbedTokenRequestBody()

    for dataset_id in dataset_ids:
        request_body.datasets.append({'id': dataset_id})

    for report_id in report_ids:
        request_body.reports.append({'id': report_id})

    if target_workspace_ids is not None:
        for target_workspace_id in target_workspace_ids:
            request_body.targetWorkspaces.append({'id': target_workspace_id})

    # Generate Embed token for multiple workspaces, datasets, and reports. Refer https://aka.ms/MultiResourceEmbedToken
    embed_token_api = 'https://api.powerbi.com/v1.0/myorg/GenerateToken'
    api_response = requests.post(embed_token_api, data=json.dumps(request_body.__dict__), headers=self.get_request_header())

    if api_response.status_code != 200:
        abort(api_response.status_code, description=f'Error while retrieving Embed token\n{api_response.reason}:\t{api_response.text}\nRequestId:\t{api_response.headers.get("RequestId")}')

    api_response = json.loads(api_response.text)
    embed_token = EmbedToken(api_response['tokenId'], api_response['token'], api_response['expiration'])
    return embed_token
python powerbi powerbi-embedded
1个回答
0
投票

正如您提到的,正常报告和视觉效果正在嵌入,我们可以假设带有嵌入 URL 和嵌入令牌的访问部分正在按预期工作。

对于分页报告,由于您没有提及分页报告使用的配置,请确保嵌入配置包含

IPaginatedReportSettings
:

export interface IEmbedConfigurationBase {
    ...
    settings?: IPaginatedReportSettings;
}

对于嵌入分页报告,我们需要在您的容量上启用分页报告工作负载,然后为其分配包含分页报告的工作区。

注意: 这仅适用于嵌入式 Gen1。

要启用分页报告,请登录 Power BI > 管理门户 > 容量设置。

参考资料:

  1. https://learn.microsoft.com/power-bi/developer/embedded/embed-pagination-reports?tabs=customers#step-4---enable-pagulated-reports-workload
  2. https://learn.microsoft.com/javascript/api/powerbi/powerbi-models/ipaginatedreportsettings
© www.soinside.com 2019 - 2024. All rights reserved.