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収量362SELECT COUNT() FROM 4579147 WHERE AGE LIKE 41収量362SELECT COUNT() FROM 4579147 WHERE AGE LIKE "41"収量362SELECT COUNT() FROM 4579147 WHERE AGE LIKE "%41%"収量362