使用 Unnest | 删除重复记录哦雅典娜

问题描述 投票:0回答:1

我在使用数组过滤数据时遇到问题 我有专栏

userid,event_name,attributes,ti

属性列有这样的值

{"bool_sample":true,"array_int":[10,20,25,38],"array_string":["hello","world","i am fine"]}

我的询问

SELECT * FROM "events-data" CROSS JOIN UNNEST(CAST(json_extract(attributes, '$["array_int"]') AS array<int>)) AS t(val)
WHERE val > 9; 

此查询过滤数据,但它为同一条记录提供了多行,对于上面的属性列记录,它为我提供了 4 行

userid,event_name,attributes,ti,val
test-userid,test-event,test-attributes,10
test-userid,test-event,test-attributes,20
test-userid,test-event,test-attributes,25
test-userid,test-event,test-attributes,38

我不需要多行

sql amazon-web-services amazon-athena
1个回答
0
投票

无需与 UNNEST 提取的数据进行 CROSS JOIN。检查

exists

尝试

SELECT * FROM "events-data" 
WHERE exists (
    select val 
    from UNNEST(CAST(json_extract_path(attributes, '$.["array_int"]') AS int[])) AS t(val) 
    where val>9)
; 
© www.soinside.com 2019 - 2024. All rights reserved.