You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Spark SQL查询嵌套JSON列,筛选featureName为'a'且results非空的行?

Spark SQL 查询实现方案

方法1:展开数组返回明细行

如果需要将每个符合条件的tectonFeatures元素拆分为独立行,可使用explode函数:

SELECT 
  *
FROM 
  your_table_name
LATERAL VIEW EXPLODE(features.tectonFeatures) exploded_tf AS tf
WHERE 
  tf.featureName = 'a'
  AND tf.results IS NOT NULL
  AND SIZE(tf.results) > 0;
  • LATERAL VIEW EXPLODE用于展开嵌套数组,将数组内每个元素转为单独一行
  • SIZE(tf.results) > 0确保results数组不为空(仅判断IS NOT NULL无法排除空数组情况)

方法2:保留原行结构筛选

如果需要保留原始行的完整结构,仅筛选出包含符合条件元素的行,可使用exists函数:

SELECT 
  *
FROM 
  your_table_name
WHERE 
  EXISTS (
    SELECT 1
    FROM UNNEST(features.tectonFeatures) AS tf
    WHERE tf.featureName = 'a'
      AND tf.results IS NOT NULL
      AND SIZE(tf.results) > 0
  );
  • UNNEST在子查询中展开数组,配合exists判断数组中是否存在满足条件的元素

注意事项

  • 替换语句中的your_table_name为实际数据表名称
  • 若需确保results数组内无null元素,可添加额外条件ALL(tf.results IS NOT NULL)

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 14:30:52