无法设置某些类型的Power BI筛选器(在视觉上)

时间:2019-04-26 02:19:28

标签: javascript powerbi powerbi-embedded

使用PowerBI-JavaScript库在视觉对象上设置过滤器时,我面临以下问题:

例如,当使用setFilters函数(在视觉对象上)时,无法在视觉上设置以下类型的筛选器:高级(filterType:0)和TopN(filterType:5):

const myAdvancedFilter = {
  $schema: 'http://powerbi.com/product/schema#advanced',
  target: {
    table: 'MyDataTable',
    measure: 'TimeDifference'
  },
  filterType: 0,
  logicalOperator: 'And',
  conditions: [
    {
      operator: 'GreaterThanOrEqual',
      value: 0
    },
    {
      operator: 'LessThanOrEqual',
      value: 12
    }
  ]
}

myVisual.setFilters([myAdvancedFilter])
  .catch(errors => {
    console.log(errors) // An error occurs
  });

这是我收到的错误:

Power BI error

以下内容也不起作用:

 reportPage.getVisuals().then(visuals => {
   let firstVisual = visuals[0]; // Note: The report only contains one visual
     firstVisual.getFilters().then(visualFilters => {
       // The visualFilters array contains advanced/topN filters (note: the visual has the advanced filters applied when it is initially embedded; before I attempt to set filters)
       firstVisual.setFilters(visualFilters).catch(errors => {
         // If I attempt to set the 'visualFilters' to the visual I get the error depicted in the above screenshot. This issue shouldn't occur because the report already has these filters applied
       });
     })
 })

setFilters()函数似乎向内置报表(在iframe中)发送了PUT请求(/ report / pages / {PageName} visuals / {Visual} / filters),并将过滤器传递给请求正文。响应返回“ InvalidFilter”错误。

注意:我可以设置基本过滤器,例如没有任何错误的列上的值。例如:

const basicFilter = {
  $schema: 'http://powerbi.com/product/schema#advanced',
  filterType: 1,
  operator: 'In',
  target: {
    table: 'MyDataTable',
    column: 'Zone'
  },
  values: ['MyZone']
}

myVisual.setFilters([basicFilter])
  .catch(errors => {
    console.log(errors) // No error occurs
  });

我可以通过过滤器窗格设置所有过滤器(基本过滤器,高级过滤器和topN过滤器),而我无法通过PowerBI-JavaScript库以编程方式设置它们。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

在我从头开始验证时,并根据constructing filters的文档,语法和实现看起来都是正确的。如果提供的表或列名称引用不正确,则会引发此类错误。

过滤器定义中的一个或多个引用实体(表,列)可能在报表中不再可用,或者名称不正确。在这种情况下,将引发“无效的过滤器定义”错误设置过滤器时。