【问题标题】:Is it possible to get reports by filtering using power bi rest api?是否可以通过使用 power bi rest api 过滤来获取报告?
【发布时间】:2018-12-11 08:54:15
【问题描述】:

是否可以通过使用 power bi rest api 进行过滤来获取报告?我想嵌入按记录过滤的 power bi 报告。我在 power bi rest api 上看不到任何选项,那么如何通过过滤器获取所有报告并将报告嵌入到我的应用程序中?

由于我使用 powerbi.js 作为 javascript 客户端,所以下面是我的示例代码: https://github.com/Microsoft/PowerBI-JavaScript

    var tokenType = 'embed';

    // Get models. models contains enums that can be used.
    var models = window['powerbi-client'].models;

    // We give All permissions to demonstrate switching between View and 
    //Edit mode and saving report.
    var permissions = models.Permissions.All;

    var config = {
        type: 'report',
        tokenType: tokenType == '0' ? models.TokenType.Aad : 
        models.TokenType.Embed,
        accessToken: txtAccessToken,
        embedUrl: txtEmbedUrl,
        id: txtEmbedReportId,
        permissions: permissions,
        settings: {
            filterPaneEnabled: true,
            navContentPaneEnabled: true
        }
    };

    // Get a reference to the embedded report HTML element
    var embedContainer = $('#embedContainer')[0];

    // Embed the report and display it within the div container.
    var report = (<any>window).powerbi.embed(embedContainer, config);

【问题讨论】:

  • 您能解释一下get all reports by filter 的含义吗?
  • 例如,我有一个动态crm account id 和sales amount 字段的报表,现在我想通过account id 过滤报表,如何在power bi 报表中进行这种过滤?
  • 我不明白这与 Power BI REST API 有什么关系。您想在 URL 中传递过滤器吗? docs.microsoft.com/en-us/power-bi/service-url-filters
  • 使用 Power BI REST API 我可以获得嵌入 url,是否可以使用此嵌入 url 传递查询参数?

标签: powerbi powerbi-embedded


【解决方案1】:

当您嵌入报告时,您可以使用Embed Configuration 在加载报告时应用过滤器。您也可以稍后动态更改过滤器。

这是来自filters wiki的引用:

过滤器是具有一组特殊属性的 JavaScript 对象。目前,有五种过滤器类型:BasicAdvancedRelative DateTop NInclude/Exclude,它们与您可以通过过滤器窗格创建的过滤器类型相匹配。有对应的接口IBasicFilterIAdvancedFilterIRelativeDateFilterITopNFilterIIncludeExcludeFilter,描述了它们需要的属性。

例如,您的过滤器可以这样构造:

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

您应该在报告的配置filters 属性中传递此过滤器。

【讨论】:

  • 感谢您的回复,我正在使用 powerbi.js 客户端并在我的帖子中添加了我的示例代码,请查看我的编辑。
  • 所以它可以代替 pbi.models.IBasicFilter 使用我的代码,例如: models.IBasicFilter 吗?因为我设置了如下模型: var models = window['powerbi-client'].models;
  • 据我了解您的问题,如上图构建示例过滤器后,您只需将filters: [basicFilter] 添加到config 即可。是的,看起来你可以省略 pbi 并使用 models.IBasicFilter
  • 在配置上添加过滤器后出现此错误:angular.min.js:123 可能未处理的拒绝:[{"message":"filters property is invalid"}]
  • @user10496245 你解决了吗?我有过滤器工作,现在突然它们不再工作了。同样的错误“过滤器属性无效”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-11
  • 1970-01-01
  • 2020-04-03
相关资源
最近更新 更多