在 Javascript API 中处理 Tableau 日期过滤器?

Handling Tableau Date Filters in Javascript API?

我一直在 tableau 提供的 JavaScript API Tutorial 中工作。

过滤器选项在区域过滤器上运行良好,但由于某些原因在 "Year" 过滤器上停滞不前。这是我的代码:

var viz;
var workbook;

// Initialize the javascript controls for Tableau
window.onload=function() {
    var vizDiv = document.getElementById('viz');
    var vizURL = 'http://public.tableau.com/views/WorldIndicators/GDPpercapita';
    var options = {
        width: '600px',
        height: '540px',
        hideToolbar: true,
        hideTabs: true,
        onFirstInteractive: function() {
        document.getElementById('sheetName').innerHTML=viz.getWorkbook().getActiveSheet().getName();
        }
    }
    viz = new tableauSoftware.Viz(vizDiv,vizURL, options);
};

// Filter By Years
function addValuesToFilter() {
    activeSheet = viz.getWorkbook().getActiveSheet();
    activeSheet.applyFilterAsync(
    "Year",
    ["2002", "2003"],
    tableau.FilterUpdateType.ADD);
}

// WORKING Filter Region
function addValuesToFilter() {
    activeSheet = viz.getWorkbook().getActiveSheet();
    activeSheet.applyFilterAsync(
    "Region",
    ["Europe", "The Americas"],
    tableau.FilterUpdateType.ADD);
}

所以我想肯定有一些 'getProperty' 函数的孩子来转储列名或其他东西,但是 API 很少,而且我不是一个很好的程序员.我查看了 .twb 文件的 xml,但它主要是 mumbo-jumbo,很难弄清楚里面发生了什么。
我哪里错了?有什么地方可以获取过滤器名称列表,或者日期过滤器在 Tableau 中的处理方式可能有所不同?

我不知道你是否想过这个,但我来这里是为了寻找其他东西,所以也许这会对某人有所帮助。

以下是我列出过滤器名称的方式。

activeSheet.getFiltersAsync().then(function(filters) {
    for (var x=0; x<filters.length; x++) {
        console.log(filters[x].getFieldName());
    }
});

如果过滤器确实被命名为 "Year",请尝试一个更具描述性的名称。它会不会与 Tableau 中的另一个 属性 冲突?在某些情况下,日期过滤器的处理方式确实有所不同(例如,如果此过滤器依赖于之前应用的另一个过滤器)。

过滤器名称列表对我有帮助。

一旦我有了过滤器名称(例如 "YEAR(Date (year))"),下面的工作就开始了。

function addYearToFilter() {
  activeSheet.applyFilterAsync(
      "YEAR(Date (year))",
      ["2008","2009"],
     tableau.FilterUpdateType.ADD);
}