0

我从 FusionTable API 得到奇怪的结果。具体来说,它似乎无法处理对数值具有相等约束的简单选择语句。我尝试以下形式的任何查询:

从 1Nynh5pPrj1q8JqbalppAm-qzAsgKvL0ZRala7VI 中选择 COUNT(),其中 AGE=41

产生零记录:

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

相比之下,范围约束可以正常工作:

从 1Nynh5pPrj1q8JqbalppAm-qzAsgKvL0ZRala7VI 中选择 COUNT(),其中 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,在二进制中重复小数)。

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

该表中的 AGE = 41 没有任何问题: https ://www.google.com/fusiontables/DataSource?snapid=S580613IY6U

关于 count() 的某些事情导致查询失败

于 2012-07-18T14:48:24.627 回答
1

这是最近引入的错误,将很快修复。如前所述,它只影响聚合的数值相等查询。带来不便敬请谅解!

于 2012-07-18T17:56:34.540 回答