在嵌入时而非初始嵌入后过滤报表的视觉对象 - Power BI Embedded (JS)
Filter a report's visual at embed time rather than after initial embed - Power BI Embedded (JS)
目前通过 JS powerbi-client 嵌入特定视觉的配置不允许传入过滤器。参见 "Embed a report visual" for the configuration supported. Note that you are able to pass in filters at embed time for a report. See "Embed a report"。无法在嵌入时过滤视觉对象会导致 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;
});
同时还有更好的方法吗?
目前,视觉嵌入不支持在嵌入时添加过滤器的配置,即 phased embedding 无法用于视觉效果。
您目前采用的方法是更新视觉效果过滤器的最佳方法。
一个小的更正是您不需要隐藏视觉对象,因为它只会在过滤器更新后呈现。
请参考以下代码片段以嵌入带有过滤器的视觉对象:
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");
});
应用过滤器的视觉嵌入:
未应用过滤器的视觉嵌入:
目前通过 JS powerbi-client 嵌入特定视觉的配置不允许传入过滤器。参见 "Embed a report visual" for the configuration supported. Note that you are able to pass in filters at embed time for a report. See "Embed a report"。无法在嵌入时过滤视觉对象会导致 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;
});
同时还有更好的方法吗?
目前,视觉嵌入不支持在嵌入时添加过滤器的配置,即 phased embedding 无法用于视觉效果。
您目前采用的方法是更新视觉效果过滤器的最佳方法。
一个小的更正是您不需要隐藏视觉对象,因为它只会在过滤器更新后呈现。
请参考以下代码片段以嵌入带有过滤器的视觉对象:
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");
});
应用过滤器的视觉嵌入:
未应用过滤器的视觉嵌入: