You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过Azure Embedded Power BI调用SQL Server存储过程生成报表并集成至Azure Web应用?

能否通过Azure Embedded Power BI调用SQL Server存储过程生成报表并集成到Azure Web应用?

当然可以实现这个方案,以下是具体的实施步骤和关键要点:

1. 在Power BI Desktop中对接存储过程

  • 打开Power BI Desktop,选择获取数据 -> SQL Server,填入你的SQL Server实例信息。
  • 进入高级选项,直接在SQL语句框中调用目标存储过程,示例:EXEC dbo.GetSalesReport @StartDate = '2024-01-01', @EndDate = '2024-06-30'。
  • 加载返回的数据集后,设计报表的可视化组件,完成后将报表发布到Power BI服务(需确保工作区关联了支持嵌入的容量,如A SKU或EM SKU)。

2. 配置Azure Embedded Power BI的权限与容量

  • 在Azure门户中创建或使用现有Power BI Embedded容量,将报表所在的工作区分配至该容量。
  • 注册Azure AD应用,获取客户端ID、客户端密钥和租户ID,用于Web应用的嵌入认证。
  • 为Azure AD应用授予目标工作区的Embed Content权限,或通过服务主体配置细粒度权限。

3. 在Azure Web应用中集成嵌入功能

  • 在Web应用项目中引入Power BI JavaScript SDK,通过SDK调用嵌入API。
  • 后端通过Azure AD应用凭据生成嵌入令牌,令牌需指定报表ID、工作区ID及对应权限(如View)。
  • 在前端页面添加HTML容器,通过SDK的embed方法将报表嵌入,示例代码片段:
// 从后端获取嵌入令牌、嵌入URL和报表ID
const embedToken = "生成的嵌入令牌";
const embedUrl = "报表的嵌入地址";
const reportId = "目标报表ID";

const embedConfig = {
    type: 'report',
    tokenType: models.TokenType.Embed,
    accessToken: embedToken,
    embedUrl: embedUrl,
    id: reportId,
    settings: {
        panes: {
            filters: { visible: false },
            pageNavigation: { visible: true }
        }
    }
};

// 嵌入报表到页面容器
const reportContainer = document.getElementById('report-container');
const embeddedReport = powerbi.embed(reportContainer, embedConfig);

4. 核心注意事项

  • 若需动态传递存储过程参数,可在Power BI报表中定义参数并与存储过程参数绑定,嵌入时通过SDK传入参数值实现动态报表。
  • 确保SQL Server防火墙允许Power BI服务(或Azure Embedded容量)访问数据库,Azure SQL Server可添加Power BI IP范围或启用服务端点。
  • 嵌入令牌有效期需合理设置,同时遵循权限最小化原则,避免过度授权。

内容的提问来源于stack exchange,提问作者Raj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 20:30:32