2016-08-24 8 views
1

earthquakeUSGS.htmlをガイドライン(https://github.com/tableau/webdataconnector)として使用して、内部APIからデータを取り出すために以下のtableau webconnectorを作成しました。 APIはjsonを返します(下のコードを参照)。私は "Webデータコネクタシミュレータ2.0"を使用しており、すべてうまくいっています。私は正しいテーブルを取得しますが、私は "テーブルデータをフェッチ"できません。これは私の最初のjsスクリプトなので、私は非常に間違いがあると確信しています。私は問題この記事でIterate through nested json object arrayTableau json API WebConnector

をKorijnからの回答を使用したデータを反復処理するには:JSONオブジェクトの上にjsのイテレータである可能性があります。誰かがjson(下)を見て、私のイテレーターを見れば、私はそれを高く評価します。これは私がデータを取り出すことが不可能になる原因です。

var feat = resp.features 

RESPが、あなたのJSONからの配列です:

test.js APIから

(function() { 
    // Create the connector object 
    var myConnector = tableau.makeConnector(); 

    // Define the schema 
    myConnector.getSchema = function(schemaCallback) { 
     var cols = [{ 
      id: "prog", 
      alias: "PrognosisTime", 
      dataType: tableau.dataTypeEnum.string 
     }, { 
      id: "start", 
      alias: "Start", 
      dataType: tableau.dataTypeEnum.date 
     }, { 
      id: "val", 
      alias: "Value", 
      dataType: tableau.dataTypeEnum.float 
     }]; 

     var tableSchema = { 
      id: "table", 
      alias: "187", 
      columns: cols 
     }; 

     schemaCallback([tableSchema]); 
    }; 

    // Download the data 
    myConnector.getData = function(table, doneCallback) { 
     $.getJSON("http://myapi.com/119%2C7777/Flattened?start=today&end=today&timeZone=CET&asOf=now&aggregation=None", function(resp) { 
      var feat = resp.features, 
       tableData = []; 
       tableData.push(
        {"table":feat.properties.table} 
        ); 

      // Iterate over the JSON object 
      //var SeriesId = feat.SeriesId 
      for(var i = 0; i <feat.DataPoints.length; i++){ 
       var PrognosisTime = feat.DataPoints.PrognosisTime; 
       var Start = feat.DataPoints.Start; 
       var Value = feat.DataPoints.Value; 
      } 
      table.appendRows(tableData); 
      doneCallback(); 
     }); 
    }; 

    tableau.registerConnector(myConnector); 

    // Create event listeners for when the user submits the form 
    $(document).ready(function() { 
     $("#submitButton").click(function() { 
      tableau.connectionName = "Neas"; // This will be the data source name in Tableau 
      tableau.submit(); // This sends the connector object to Tableau 
     }); 
    }); 
})(); 

JSON

[ 
    { 
    "SeriesId": 119, 
    "DataPoints": [ 
     { 
     "PrognosisTime": null, 
     "Start": "2016-08-24T00:00:00", 
     "Value": 26.19 
     }, 
     { 
     "PrognosisTime": null, 
     "Start": "2016-08-24T01:00:00", 
     "Value": 23.9 
     }, 
     { 
     "PrognosisTime": null, 
     "Start": "2016-08-24T02:00:00", 
     "Value": 22.82 
     } 
    ] 
    }, 
    { 
    "SeriesId": 7777, 
    "DataPoints": [ 
     { 
     "PrognosisTime": null, 
     "Start": "2016-08-24T00:00:00", 
     "Value": 36.39 
     }, 
     { 
     "PrognosisTime": null, 
     "Start": "2016-08-24T00:15:00", 
     "Value": 28.81 
     }, 
     { 
     "PrognosisTime": null, 
     "Start": "2016-08-24T00:30:00", 
     "Value": 24.28 
     } 
    ] 
    } 
] 

答えて

1

問題は、このラインでありますフィーチャとは何もありません。したがって、単にresp(またはfeat = resp)を繰り返し実行し、DataPoints配列を引き出します。