【发布时间】:2021-02-10 22:45:20
【问题描述】:
我有一个来自 Firebase 的 JSON,如下所示:
{
'name' : 'starbyone',
'foo': {'id': 123},
'somebit': True,
'bar': {'_a': 123, '_b': 456}
}
我正在使用 BigQuery 并且很想通过使用 JSON_EXTRACTfunction 来提取“foo”:
SELECT
JSON_EXTRACT(json, "$.name") as Works,
JSON_EXTRACT(json, "$.foo") as AlsoWorks,
JSON_EXTRACT(json, "$.bar") as DoesNotWork
FROM schema.table
但问题是第三列(别名为 DoesNotWork)只返回 NULL,而 'Foo' 将返回字符串“{'id': 123}”
我也尝试过 JSON_VALUE ,但无济于事。
我做错了什么?
这个简单的 sn-p 似乎也不适合我:
SELECT JSON_EXTRACT("{'category': 1, 'comments': [], 'free': False,'price': 55","$.price") AS Result
【问题讨论】:
-
你在
foo之前缺少逗号 - 而不是这个 - 对我有用 - 输出是 [ { "Works": "\"starbyone\"", "AlsoWorks": "{\" id\":123}", "DoesNotWork": "{\"_a\":123,\"_b\":456}" } ] -
@MikhailBerlyant 这是一个错字,我编辑了它。您在使用 BigQuery 编辑器吗?
-
使用 BQ 控制台 - console.cloud.google.com/bigquery
-
@MikhailBerlyant ` SELECT JSON_EXTRACT("{'category': 1, 'cmets': [], 'free': False,'price': 55","$.price") AS 结果` 这个 sn-p 返回 NULL 吗?它在控制台中为我这样做。如果我将其更改为类别,它就可以正常工作,在这种情况下,预期的结果 (1) 会显示在控制台中。
-
将
False更改为false或'False'- 取决于此属性代表什么 - 布尔值或字符串
标签: sql json google-bigquery