【发布时间】:2015-10-22 10:27:09
【问题描述】:
我正在使用 BigQuery 并将 JSON 字符串存储在某些字段中。 在这里,我有一个名为“json”的字段,其中包含如下 JSON 字符串:
{"log_id":939286972300751993,"status":"good"}
并使用下面的 sql 查询:
SELECT json, JSON_EXTRACT(json, "$.log_id") AS log_id
FROM dataset.table;
结果是:
json | log_id
-------------------------------------------------+---------------------
{"log_id": 939286972300751993, "status": "good"} | 9.39286972300752e+17
但我期望的是:
json | log_id
-------------------------------------------------+---------------------
{"log_id": 939286972300751993, "status": "good"} | 939286972300751993
"log_id" 在我的上下文中应该被视为 INTEGER。 有什么办法可以避免 JSON_EXTRACT 函数将大整数替换为指数符号?
【问题讨论】:
-
据我所知,JSON 规范没有对数字范围施加任何限制,但大多数库确实有限制。如果您切换到字符串,您可能会更安全:
{"log_id":"939286972300751993","status":"good"} -
感谢重播。是的,我认为你是对的。如果我可以重新定义架构,我会按照你说的做,但我已经拥有包含数据的庞大数据集,正如我所解释的,很难更新所有数据。
-
你如何抛出你的查询?通过 GUI,通过 API?
-
我尝试了 Web GUI 和 API,结果是一样的。
标签: sql json google-bigquery