0

FusionTable API から奇妙な結果が得られます。具体的には、数値に等値制約がある単純な select ステートメントを処理できないようです。次の形式で試したクエリ:

1Nynh5pPrj1q8JqbalppAm-qzAsgKvL0ZRala7VI から COUNT() を選択 WHERE AGE=41

ゼロレコードが生成されます:

{
 "kind": "fusiontables#sqlresponse",
 "columns": [
  "count()"
 ],
 "rows": [
  [ "0" ]
 ]
}

対照的に、範囲制約は問題なく機能します。

1Nynh5pPrj1q8JqbalppAm-qzAsgKvL0ZRala7VI から COUNT() を選択 WHERE AGE>40.99 AND AGE<41.01

{
 "kind": "fusiontables#sqlresponse",
 "columns": [
  "count()"
 ],
 "rows": [
  [  "362" ]
 ]
}

下の数字は整数ではないのでしょうか? 1Nynh5pPrj1q8JqbalppAm-qzAsgKvL0ZRala7VI から年齢を選択すると、AGE>40.99 AND AGE<41.01が返されます

{
 "kind": "fusiontables#sqlresponse",
 "columns": [
  "AGE"
 ],
 "rows": [
  [ "41" ],
  [ "41" ],
  [ "41" ],
  ...359 more...
]}

さて、浮動小数点表現のエラーが発生している可能性がありますか? 小さな整数は浮動小数点数として正確に表現できると思いました (0.1 などの一部の小数が 2 進数で小数を繰り返している場合でも)。

Fusion Table SQL のバグが他の人に発見されずに済むとは考えにくいので、この特定の FusionTableのロード方法に固有の何かがあるのではないでしょうか?

アップデート:

上記の新しい Fusion Table API を使用するとクエリが失敗するように見えますが、古い Fusion Table SQL API (最近非推奨) を使用すると成功します: www.google.com/fusiontables/api/query?sql=SELECT%20COUNT()%20FROM% 204579147%20WHERE%20AGE%20LIKE%2041

これは、次の JSON 応答を返します。

count()
362

また、新しい FusionTable API は数値によって混乱しているように見えます。

  • SELECT COUNT() FROM 4579147 WHERE AGE = 41 利回り0(不正解)

  • SELECT COUNT() FROM 4579147 WHERE AGE = "41" 利回り0(不正解)

  • SELECT COUNT() FROM 4579147 WHERE AGE MATCHES 41 収量362

  • SELECT COUNT() FROM 4579147 WHERE AGE LIKE 41 収量362

  • SELECT COUNT() FROM 4579147 WHERE AGE LIKE "41" 収量362

  • SELECT COUNT() FROM 4579147 WHERE AGE LIKE "%41%" 収量362

4

2 に答える 2

1

これは最近導入されたバグで、まもなく修正されます。説明されているように、集計を使用した数値等価クエリにのみ影響します。ご不便おかけしてすみません!

于 2012-07-18T17:56:34.540 に答える
1

そのテーブルの AGE = 41 に問題はありません: https://www.google.com/fusiontables/DataSource?snapid=S580613IY6U

count() に関する何かが原因でクエリが失敗する

于 2012-07-18T14:48:24.627 に答える