Tableau:从简单的REST调用中导入JSON数据

时间:2017-05-19 07:37:58

标签: json rest tableau

我有一个REST API(由外部服务器提供服务)回复JSON格式的数据。

根据我从Tableau doc中读到的内容,可以使用:
- WebDataConnector但你必须在你的网页上添加一个JS重载,不太适合REST API - 从文件导入JSON数据,但不回答我的问题

是否有一种简单的方法来集成通过REST调用请求的JSON数据?

1 个答案:

答案 0 :(得分:0)

你可以使用WDC,你错了它不适合REST API。因此,您基本上需要创建2个函数,以便从API获取数据集的字段和数据:

    myConnector.getSchema = function (schemaCallback) {
    $.ajax({
        url: apiurl + JSON.parse(tableau.connectionData)['diggerID'] + "/sessions/last/data/one",
        type: "GET",
        headers: {
            'Authorization': 'Token ' + JSON.parse(tableau.connectionData)['apiKey']
        },
        success: function(response){
            var flatten = objectFlatten(response)
            var columns = []
            for (var key in flatten) {
                var id = key.replace(/[^A-Za-z0-9_]+/g, '')
                columns.push({
                    id: id,
                    alias: key,
                    dataType: tableauType(flatten[key])
                })
            }
            var table = {
              id: "digger_" + JSON.parse(tableau.connectionData)['diggerID'],
              alias: tableau.connectionName,
              columns: columns
            }
            schemaCallback([table]);
        },
        error: function (xhr, ajaxOptions, thrownError) {
            tableau.abortWithError("Unable to get data. Make sure you used proper API key and you have at least one session for selected digger with dataset.");
        }
    });
};
myConnector.getData = function (table, doneCallback) {
    $.ajax({
        url: apiurl + JSON.parse(tableau.connectionData)['diggerID'] + "/sessions/last/data",
        type: "GET",
        headers: {
            'Authorization': 'Token ' + JSON.parse(tableau.connectionData)['apiKey']
        },
        success: function(response){
            var data = []
            for (var i=0; i < response.length; i++) {
                var flatten = objectFlatten(response[i])
                var rec = {}
                for (var key in flatten) {
                    var id = key.replace(/[^A-Za-z0-9_]+/g, '')
                    rec[id] = flatten[key]
                }
                data.push(rec)
            }
            table.appendRows(data);
            doneCallback();
        },
        error: function (xhr, ajaxOptions, thrownError) {
            tableau.abortWithError("Unable to get data. Make sure you used proper API key and you have at least one session for selected digger with dataset.");
        }
    });
};

有关完整代码,您可以在github上查看源代码:https://github.com/Diggernaut/diggernaut-wdc