我正在try 将json字段拆分为N行,给定该字段具有的不同元素.
这是我正在使用的查询:
WITH Jsonified AS (
SELECT
test_json_data,
CAST(REPLACE(REPLACE(test_json_data, "\\'", "''"), "'", '"') as json) as json_data
FROM vt_raw_data
WHERE full_url = 'test'
)
SELECT
j.json_data,
JSON_UNQUOTE(JSON_EXTRACT(JSON_KEYS(j.json_data), CONCAT('$[', idx, ']'))) AS `key`-- ,
-- JSON_UNQUOTE(JSON_EXTRACT(j.json_data, CONCAT('$.', JSON_UNQUOTE(JSON_EXTRACT(JSON_KEYS(j.json_data), CONCAT('$[', idx, ']')))))) AS `value`
FROM Jsonified j
CROSS JOIN JSON_TABLE(JSON_KEYS(j.json_data), '$[*]' COLUMNS (idx FOR ORDINALITY)) AS keys_idx;
以下是数据样本:
{'provider1': 'malicious', 'provider2': 'malware', 'provider3': 'malware'}
我遇到的问题如下:
- 我返回了三行(如预期),但第3行的键为空,应该是"provider 3"
- 我需要对密钥的价值做同样的事情,但我认为解决第1点我将能够复制
提前感谢!