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

时间:2015-10-27 21:59:04

标签: javascript api tableau

我一直在该画面提供的JavaScript API Tutorial工作。

过滤器选项在区域过滤器上运行良好,但出于某种原因在"年"过滤。这是我的代码:

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,但它主要是大笨蛋,很难在那里发生什么事情。 。
我在哪里错了?有没有我可以获得过滤器名称列表的地方,或者在Tableau中可能以不同方式处理日期过滤器?

2 个答案:

答案 0 :(得分:1)

我不知道你是否想过这个,但我到这里寻找别的东西,所以这可能对某人有帮助。

这是我如何列出过滤器名称。

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

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

答案 1 :(得分:1)

过滤器名称列表帮助了我。

一旦我有过滤器名称(例如“年(日期(年))”),以下工作。

std::error_condition