簡體   English   中英

使用 Presto 解析 JSON 列

[英]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

但似乎無法使用他們的文檔來弄清楚。

假設RatesJSON類型的列(否則使用json_parse )並且您不想使用json_extract_scalarjson_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM