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