我有一个包含结构数组的表(源自Spark镶木地板文件)。例如,表树看起来像这样:
| -- family_name : string
| -- kids : array
| -- element : struct
| -- name : string
| -- id : string
| -- class_grades : struct
| -- math : int
| -- science : int
我想得到所有family_name
个至少有一个math
等级高于90的孩子。请注意,孩子的数量可能因家庭而异。我怎么能这样做?
答案 0 :(得分:0)
弄清楚:
SELECT
family_name,
grades.math
FROM
(SELECT
family_name,
grades
FROM
table_name
LATERAL VIEW OUTER
explode(class_grades) c as grades)
AS
exploded_grades
WHERE grades.math > 90