簡體   English   中英

比較 Json 列表中的值 - Presto

[英]Compare values in list of Json - Presto

如何在列表的每個 Json 中使用 Presto 檢查 end_date > start_date。 以紀元毫秒為單位的時間。 所有列表都在列名“日期”中

[{end_date=1662960600000, start_date=1662984000000}, {end_date=1663047000000, start_date=1663045200000}, {end_date=1663133400000, start_date=1663131600000}]

基於提供的 output 您的數據看起來像地圖或行數組,因此您可以使用數組函數相應地處理它:

-- sample data
with test_data (dates) AS (
    VALUES (array[
        map(array['end_date','start_date'], array[1662960600000, 1662984000000])
        , map(array['end_date','start_date'], array[1662984000000, 1662960600000])])
)

-- query
select all_match(dates, m -> m['end_date'] > m['start_date']) all_start_earlier_then_end
from test_data;

Output:

all_start_earlier_then_end
錯誤的

行版本將如下所示:

select all_match(dates, m -> m.end_date > m.start_date) all_start_earlier_then_end
from test_data;

如果all_match不可用(由於舊版本),您可以使用filtercardinality解決方法:

select cardinality(filter(dates, m -> m.end_date < m.start_date)) = 0 all_start_earlier_then_end
from test_data;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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