Len*_*ena 2 sql json google-bigquery
我有一个 Google Big Query Table 列,其中包含一个 json 字符串。随着时间的推移,这个 json 字符串中引入了新的键。
time col_b
--------------------------------------------------
timestamp3 {"key1": "value", "key2": "value"}
timestamp2 {"key1": "value"}
timestamp1 {"key1": "value"}
Run Code Online (Sandbox Code Playgroud)
如何提取 key2 并在它不存在的情况下填充 NaN?我想到了类似的事情:
SELECT
JSON_EXTRACT(col_b, "$.key2) AS key2
FROM db;
Run Code Online (Sandbox Code Playgroud)
这样做会引发错误,因此它认为应该是双精度值而不是字符串导致空值。
Bad double type: value
Run Code Online (Sandbox Code Playgroud)
如何提前检查key2是否存在,如果不存在则填充null?
请参阅下面的示例
#standardSQL
WITH `project.dataset.table` AS (
SELECT 'timestamp3' time, '{"key1": "value", "key2": "value"}' col_b UNION ALL
SELECT 'timestamp2', '{"key1": "value"}' UNION ALL
SELECT 'timestamp1', '{"key1": "value"}'
)
SELECT *, IFNULL(JSON_EXTRACT_SCALAR(col_b, '$.key2'), 'NaN') AS key2
FROM `project.dataset.table`
Run Code Online (Sandbox Code Playgroud)
带输出
Row time col_b key2
1 timestamp3 {"key1": "value", "key2": "value"} value
2 timestamp2 {"key1": "value"} NaN
3 timestamp1 {"key1": "value"} NaN
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4198 次 |
最近记录: |