如何在Power BI嵌入的JavaScript报告中设置筛选器

3
我想在我的Power BI嵌入式报告中添加一些筛选器,我有一个HTML文件,并且需要在JavaScript中添加一些筛选器,但我没有开发经验。我只需要看一个例子,以了解如何添加它。
<head>  `enter code here`
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">  
    <meta name="viewport" content="width=device-width,initial-scale=1">  
    <title>test</title>  

    <script type="text/javascript" language="javascript" src="https://code.jquery.com/jquery-1.12.4.js"></script>  
    <script type="text/javascript" language="javascript" src="https://rawgit.com/Microsoft/PowerBI-JavaScript/master/dist/powerbi.min.js"></script>  


</head>  

<body>  
    <h1>test</h1>  
    <div id="reportContainer" style="width: 80%; height: 800px;"></div>  
</body>  

<script>  
    $(document).ready(function () {  
        var getEmbedToken = "https://testclienttest.azurewebsites.net/api/HttpTrigger1?code=XXXXXXXXXXXXXXXXXXX/XXXXXXXXXXXXX==";  

        $.ajax({  
            url: getEmbedToken,  
            jsonpCallback: 'callback',  
            contentType: 'application/javascript',  
            dataType: "jsonp",  
            success: function (json) {  

                var models = window['powerbi-client'].models;  

                var embedConfiguration = {  
                    type: 'report',  
                    id: json.ReportId,  
                    embedUrl: json.EmbedUrl,  
                    tokenType: models.TokenType.Embed,  
                    accessToken: json.EmbedToken  
                };  

                var $reportContainer = $('#reportContainer');  
                var report = powerbi.embed($reportContainer.get(0), embedConfiguration);


            },  
            error: function () {  
                alert("Error");  
            }  
        });  

    });  
</script>  

</html>

我认为在这行代码之后添加筛选器:var report = powerbi.embed($reportContainer.get(0), embedConfiguration);。
2个回答

6
要筛选您的嵌入式报表,您必须构建一个或多个过滤器并将它们作为数组传递给JavaScript客户端-可以在embedConfigurationfilters属性中,也可以作为report/page/visual setFilters方法的参数。
这些过滤器可以是以下类型之一:
  • IBasicFilter
  • IAdvancedFilter
  • IRelativeDateFilter
  • ITopNFilter
  • IIncludeExcludeFilter
例如,要对名为Product的表进行筛选,仅显示Count列为1、2或3的数据,可以按如下方式构建:
const basicFilter: pbi.models.IBasicFilter = {
  $schema: "http://powerbi.com/product/schema#basic",
  target: {
    table: "Product",
    column: "Count"
  },
  operator: "In",
  values: [1,2,3],
  filterType: 1 // pbi.models.FilterType.BasicFilter
}

然后修改你的代码,将这个过滤器传递给embedConfiguration

var embedConfiguration = {  
    type: 'report',  
    id: json.ReportId,  
    embedUrl: json.EmbedUrl,  
    tokenType: models.TokenType.Embed,  
    accessToken: json.EmbedToken,
    filters: [basicFilter]  
};

欲了解更多有关配置嵌入元素的信息,请参阅嵌入配置详细信息。若要查看有关如何使用不同类型的筛选器及应用它们的更多信息,请参阅筛选器


谢谢您的回答,但是当我将此行添加到Embedconfiguration中时出现了错误:filters:[basicFilter]。例如,在我的情况下,我只想使用表“Contract”和列“IdContract”进行过滤。所以它应该像这样:const basicFilter: pbi.models.IBasicFilter = { $schema: "http://powerbi.com/product/schema#basic", target: { table: "Contract", column: "IdContract" }, operator: "In", values: [123456], filterType: 1 // pbi.models.FilterType.BasicFilter } - Nabs

0

@Andrey Nikolov

感谢您的回答,但是当我添加这行代码时出现了错误:filters: [basicFilter],例如在我的情况下,我只想使用表格“Contract”和列“IdContract”进行过滤。

所以它应该像这样:

const basicFilter: pbi.models.IBasicFilter = {
  $schema: "http://powerbi.com/product/schema#basic",
  target: {
    table: "Contract",
    column: "IdContract"
  },
  operator: "In",
  values: [123456],
  filterType: 1 // pbi.models.FilterType.BasicFilter
}

那么

var embedConfiguration = {  
    type: 'report',  
    id: json.ReportId,  
    embedUrl: json.EmbedUrl,  
    tokenType: models.TokenType.Embed,  
    accessToken: json.EmbedToken,
    filters: [basicFilter]  
};

我不知道这是否是你的意思...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接