powerbi - 在嵌入时而不是在初始嵌入之后过滤报表的视觉对象 - Power BI Embedded (JS)
问题描述
目前通过 JS powerbi-client 嵌入特定视觉的配置不允许传入过滤器。有关支持的配置,请参阅“嵌入报表视觉对象” 。请注意,您可以在嵌入时为报告传递过滤器。请参阅“嵌入报告”。无法在嵌入时过滤视觉对象会导致 2 个跃点(一次使用默认过滤器加载视觉对象,然后另一个使用预期过滤器加载)。
功能请求:我希望在嵌入时添加该功能以过滤视觉效果,就像它存在于报告中一样。
我现在这样做的方法是隐藏视觉,嵌入它,在加载时设置过滤器,然后在渲染时显示它。
this.visualReady = false;
let visual = this.powerbi.embed(
embedElement,
visualLoadConfig
) as pbi.Visual;
visual.on('loaded', async () => {
await visual.setFilters([upcFilter, dateFilter]);
});
visual.on('rendered', async () => {
this.visualReady = true;
});
同时有没有更好的方法来做到这一点?
解决方案
目前,视觉嵌入不支持在嵌入时添加过滤器的配置,即分阶段嵌入对于视觉效果是不可能的。
您当前遵循的方法是更新视觉效果过滤器的最佳方法。
一个小的更正是您不需要隐藏视觉对象,因为它只会在过滤器更新后呈现。
请参阅下面的片段以使用过滤器嵌入视觉对象:
const visual = powerbi.embed(PowerBIEmbed.visualContainer.get(0), visualConfig);
// Clear any other loaded handler events
visual.off("loaded");
// Triggers when a visual schema is successfully loaded
visual.on("loaded", function () {
console.log("visual load successful");
const basicFilter = {
$schema: "http://powerbi.com/product/schema#basic",
target: {
table: "Dates",
column: "Month"
},
operator: "In",
values: ['Feb'],
filterType: 1,
requireSingleSelection: true
}
visual.setFilters([basicFilter]).then(res => {
visual.getFilters().then(filters => {
console.log(filters);
});
}).catch(error => {
console.error(error);
});
});
// Clear any other rendered handler events
visual.off("rendered");
// Triggers when a visual is successfully embedded in UI
visual.on("rendered", function () {
console.log("visual render successful");
});
推荐阅读
- youtube - Widevine 在 Youtube 预认证测试中崩溃
- javascript - React - render() 方法 - 调用 {renderG 的区别
- flutter - Flutter:Gradle 插件仅支持 Kotlin Gradle 插件版本 1.3.10 及更高版本
- c++ - 将向量的两个字节转换为字符串
- node.js - 部署不断失败而没有输出
- sql-server - AWS Glue - 从 SQL 表中删除行
- c++ - 使用继承的赋值运算符
- regex - 正则表达式如何设置任意数量的字符,但 '|' 是必须的?
- bash - 如何从两个不同分隔符之间的线中提取字符串?
- graphql - 初始化 ApolloProvider 后更新标头