如何在嵌入的Power BI分页报表中传递参数?
如何在嵌入的Power BI分页报表中传递参数?
我来帮你搞定这个在Angular项目里给嵌入的Power BI分页报表传参数的问题~ 你之前已经能正常嵌入报表了,那加参数其实就是在现有配置上补点内容就行,分两种场景给你说清楚:
初始化时传递固定参数
你只需要在原来的embedConfig对象里,新增一个parameters属性,把报表需要的参数以键值对的形式填进去就好。举个实际的配置例子:
// 组件类里的embedConfig配置示例 this.embedConfig = { type: 'paginatedReport', id: '你的报表唯一ID', embedUrl: '报表的嵌入URL', tokenType: models.TokenType.Embed, accessToken: '你的嵌入访问令牌', // 新增的参数配置:键是报表里定义的参数名,值是要传递的参数值 parameters: { "订单日期": "2024-01-01", "销售区域": "华北区" } };
这里要划重点:参数的名称必须和你的Power BI分页报表里预先定义的参数完全匹配(包括大小写),不然报表识别不到这些参数哦。
动态修改参数(比如用户交互后更新)
如果需要在页面交互后动态更新报表参数(比如用户选了新的日期范围再刷新报表),可以这么操作:
- 先在模板里给分页报表组件加个模板引用变量:
<powerbi-paginated-report #myPaginatedReport [embedConfig]="embedConfig" [cssClassName]="'container'"> </powerbi-paginated-report>
- 然后在组件类里获取这个组件的引用,通过实例方法来更新参数:
import { ViewChild, OnInit } from '@angular/core'; import { PowerBiPaginatedReportComponent } from 'powerbi-client-angular'; import * as models from 'powerbi-models'; export class YourReportComponent implements OnInit { @ViewChild('myPaginatedReport') paginatedReportComponent!: PowerBiPaginatedReportComponent; embedConfig: any; ngOnInit(): void { // 初始化你的基础embedConfig配置... } // 自定义的参数更新方法,可绑定到按钮点击等用户交互事件 async updateReportParams() { // 根据业务逻辑生成新的参数 const updatedParams = { "订单日期": "2024-03-01", "销售区域": "华东区" }; // 获取报表实例 const reportInstance = await this.paginatedReportComponent.getReport(); // 设置新参数,报表会自动刷新加载对应内容 await reportInstance.setParameters(updatedParams); } }
最后再提两个注意点:
- 要确保你的嵌入访问令牌有足够的权限来操作报表参数,不然可能会触发权限报错
- 如果是多选类型的参数,直接传数组格式的值就行,比如
"产品类别": ["电子产品", "家居用品"]
内容来源于stack exchange
相关产品推荐
相关产品推荐

