[英]Parse JSON column using Presto
我在 Presto 中有一張看起來像
日期 | 費率 |
---|---|
2022 年 1 月 1 日 | {“美元”:“725.275”,“英鎊”:“29.275000000000002”,“加元”:“0.713352”} |
2022 年 1 月 2 日 | {“美元”:“745.275”,“英鎊”:“40.275000000000002”,“加元”:“0.813352”} |
我希望它類似於查詢的 output 是:
Date Currency Rate
1/1/2022 USD 725.275
1/2/2022 USD 745.275
1/1/2022 GBP 29.275
1/2/2022 GBP 40.275
1/1/2022 CAD 0.713352
1/2/2022 CAD 0.813352
但似乎無法使用他們的文檔來弄清楚。
假設Rates
是JSON
類型的列(否則使用json_parse
)並且您不想使用json_extract_scalar
( json_extract_scalar(Rates, '$.USD')
, json_extract_scalar(Rates, '$.GBP')
來“手動”處理每種貨幣, ...) - 處理這種“動態” json 的常用方法是將其轉換為map
(例如map(varchar, double)
在這種情況下)並使用unnest
:
WITH dataset ( Date,Rates) AS (
VALUES ('1/1/2022', json '{"USD":"725.275","GBP":"29.275000000000002","CAD":"0.713352"}'),
('1/2/2022', json '{"USD":"745.275","GBP":"40.275000000000002","CAD":"0.813352"}')
)
--query
select date, currence, rate
from dataset
cross join unnest(cast(rates as map(varchar, double))) t(currence, rate)
Output:
日期 | 當前 | 速度 |
---|---|---|
2022 年 1 月 1 日 | 計算機輔助設計 | 0.713352 |
2022 年 1 月 1 日 | 英鎊 | 29.275000000000002 |
2022 年 1 月 1 日 | 美元 | 725.275 |
2022 年 1 月 2 日 | 計算機輔助設計 | 0.813352 |
2022 年 1 月 2 日 | 英鎊 | 40.275 |
2022 年 1 月 2 日 | 美元 | 745.275 |
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.