0

Google FusionTables を学習しているため、初歩的なミスを犯している可能性があります。Ajax API ではなく ChartTools API を介して Google Fusion Tables にクエリを実行すると、正しい結果が得られます。奇妙なことに、すべてではなく、クエリの一部に対して正しい結果が得られます。私は間違いを犯していますか?

Chart Tools API の動作: Chart Tools API を介した Google FusionTable のクエリは、500 行の制限がありますが、正常に動作しているようです。たとえば、次のクエリは次のようになります。 SELECT ETHUN, COUNT() FROM 1Nynh5pPrj1q8JqbalppAm-qzAsgKvL0ZRala7VI GROUP BY ETHUN

Google Chart Tools API を使用すると、URL はhttp://www.google.com/fusiontables/gvizdata?tq=SELECT%20ETHUN%2C%20COUNT()%20%20FROM%201Nynh5pPrj1q8JqbalppAm-qzAsgKvL0ZRala7VI%20GROUP%20BY%20ETHUN&tqx=になります。 JSON 関数を返すreqId%3A0 :

google.visualization.Query.setResponse({
    version:'0.5',
    reqId:'0',status:'ok',
    table:{
        p:{totalrows:3},
        cols:[
            {id:'col6',label:'ETHUN',type:'number'},           
            {id:'#agg#COUNT',label:'count()',type:'number'}
        ],
        rows:[
            {c:[{v:1.0},{v:3308.0}]}
            {c:[{v:2.0},{v:18702.0}]},
            {c:[{v:-9.0},{v:10768.0}]},
        ]
     }
 })

特に、ETHUN の値として値 {1,2,-9} に注意してください。

新しい FusionTables API が機能しない: 一方、Ajax API を介して同じクエリを作成すると、正しい頻度が返されますが、頻度が表す値自体は NaN になります: https://www.googleapis.com/fusiontables/v1/query?sql =SELECT%20ETHUN%2C%20COUNT()%20%20FROM%201Nynh5pPrj1q8JqbalppAm-qzAsgKvL0ZRala7VI%20GROUP%20BY%20ETHUN&key=AIzaSyBT_ZCriV-Tm78KsJiQp6KKhjDwMhP0tYM

次の JSON が返されます。

{
 "kind": "fusiontables#sqlresponse",
 "columns": [ "ETHUN",  "count()"  ],
 "rows": [
  [  NaN,  "3308" ]
  [  NaN, "18702" ],
  [  NaN, "10768" ],
 ]
}

{1, 2, -9} の代わりに NaN が返されるのはなぜですか?

更新: この問題は新しい Fusion Tables SQL に固有のものであると考えています。質問は少し編集されています。

( Fusion Tableの例へのリンクはこちら)

Fusion Tables SQL API (現在は非推奨) も動作します

奇妙なことに、このリンクも正常に機能します。 script&jsonCallback=onResponseで、さらに別の形式で次の JSONP 応答を返します。

onResponse({"table":{"cols":["ETHUN","count()"],"rows":[["2",18702],["-9",10768],["1",3308]]}})
4

1 に答える 1

0

これは、Google Fusion Tables API v1.0 のバグのようです。このエラーは、数値フィールドに固有のものです。Ajax は String フィールドを正しくクエリできます。このデータセットだけがほとんど数値フィールドを持っています。

于 2012-07-18T13:45:38.917 に答える