如何在AWS QuickSight的SQL中筛选空数组数据?
筛选数组类型列中空数组行的正确方法
你遇到的语法错误是因为把复杂数组类型和字符串直接做相等比较导致的类型不兼容。classificationdetails.result.sensitivedata是包含嵌套row结构的数组类型,不能用字符串'[]'来匹配空数组,必须使用数组专用的判断函数。
以下是两种可行的解决方案:
方法1:用CARDINALITY()判断数组长度
CARDINALITY()函数返回数组的元素个数,空数组的长度为0,直接判断即可:
SELECT DISTINCT classificationdetails.result.sensitivedata AS sens, createdat FROM "demo"."crawler_tbl_with_s3_sqseu_west_2" WHERE CARDINALITY(classificationdetails.result.sensitivedata) = 0;
方法2:用ARRAY_EMPTY()直接判断空数组(部分SQL引擎支持)
如果你的SQL引擎(比如Presto、Athena)支持ARRAY_EMPTY()函数,可以用更直观的写法:
SELECT DISTINCT classificationdetails.result.sensitivedata AS sens, createdat FROM "demo"."crawler_tbl_with_s3_sqseu_west_2" WHERE ARRAY_EMPTY(classificationdetails.result.sensitivedata);
关键注意点
永远不要用字符串值(比如'[]')去匹配数组类型的列,不同数据类型之间无法直接做相等判断,必须使用对应数据类型的专用函数来处理。
内容的提问来源于stack exchange,提问作者adam4522
相关产品推荐
相关产品推荐

