首页 > 解决方案 > 在嵌入时而不是在初始嵌入之后过滤报表的视觉对象 - 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;
});

同时有没有更好的方法来做到这一点?

标签: powerbipowerbi-embedded

解决方案


目前,视觉嵌入不支持在嵌入时添加过滤器的配置,即分阶段嵌入对于视觉效果是不可能的。

您当前遵循的方法是更新视觉效果过滤器的最佳方法。

一个小的更正是您不需要隐藏视觉对象,因为它只会在过滤器更新后呈现。

请参阅下面的片段以使用过滤器嵌入视觉对象:

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");
});

应用过滤器的视觉嵌入: 应用过滤器的视觉嵌入

未应用过滤器的视觉嵌入: 未应用过滤器的视觉嵌入


推荐阅读