【问题标题】:Tableau filter is not working for SETs that are created using Tableau Extension APITableau 筛选器不适用于使用 Tableau Extension API 创建的 SET
【发布时间】:2019-05-08 20:32:15
【问题描述】:

我在 tableau 中创建了一个导出到 CSV 扩展,以将其嵌入到仪表板中,供用户下载数据。 但是我们有条件,我需要在下载之前使用 applyFilterAsync 将过滤器设置为某个值,并使用带有“filtername”和“value”参数的相同 applyFilterAsync 以及 filterUpdateType.ADD 来添加和 REMOVE 来删除该过滤器。

这不适用于 SET、Rangefilters、Dimensions 等。

需要您的帮助来解决这个问题。

清除过滤器:

for (var i = 0; i < worksheets.length; i++) {
    var sheet = worksheets[i];
    if (sheetList.indexOf(sheet.name) > -1) {
      sheet.getFiltersAsync());      
      sheet.clearFilterAsync('IN/OUT(DownloadSet)');
      console.log('Filter Cleared');
    }
  }

下载后应用过滤器:

sheet.applyFilterAsync('IN/OUT(DownloadSet)','In',tableau.FilterUpdateType.Replace);

请您帮忙解决这个问题。

谢谢。

【问题讨论】:

    标签: javascript filter tableau-api


    【解决方案1】:

    由于这些是异步函数,它们返回一个承诺。您的代码应如下所示:

        for (var i = 0; i < worksheets.length; i++) {
            var sheet = worksheets[i];
            if (sheetList.indexOf(sheet.name) > -1) {
              sheet.getFiltersAsync())
              .then(function() { 
                 sheet.clearFilterAsync('IN/OUT(DownloadSet)');
              })
              .then(function() { 
                 console.log('Filter Cleared');
              })      
            }
          }
    

    与 applyFilterAsync 相同:

    sheet.applyFilterAsync('IN/OUT(DownloadSet)',['In'],tableau.FilterUpdateType.Replace)
        .then(function() {
         // do something
        })
    

    没有看到更多上下文/错误,这可能是导致您的问题的原因。

    编辑:设置过滤器自动评估为“In”值。我正在调查您是否有正确的设置过滤器语法。

    更新:。这应该是正确的异步调用:

    对于 applyFilterAsync,您需要传递一个字符串数组,sheet.applyFilterAsync('IN/OUT(DownloadSet)',['In'],tableau.FilterUpdateType.Replace)

    【讨论】:

    • 您好 tagyoureit,感谢您的回复。在初始步骤中更换过滤器后问题已解决。
    • 太棒了!请您将我的答案标记为正确吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    • 2020-06-28
    • 1970-01-01
    • 2017-08-06
    相关资源
    最近更新 更多