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

如何提取Redshift嵌套表struct列内数组的首个提交邮箱?

解决GitHub数据提取首个提交邮箱的问题

错误原因

你之前的查询报错是因为直接尝试访问数组commits的嵌套author字段,Hive/Spark SQL不允许这种直接访问方式。commits是数组类型,必须先指定数组元素的索引,或者用数组处理函数来访问内部结构。

正确查询语句

如果只需要提取首个提交的邮箱,直接通过数组索引[0]访问第一个元素即可:

SELECT 
  payload.action,
  payload.commits[0].author.email AS first_commit_email
FROM ghdata g

兼容空数组的健壮写法

如果存在commits数组为空的情况,可以添加判断避免报错:

SELECT 
  payload.action,
  CASE 
    WHEN size(payload.commits) > 0 THEN payload.commits[0].author.email 
    ELSE NULL 
  END AS first_commit_email
FROM ghdata g

补充:若需提取所有提交的邮箱

如果后续需要提取所有提交的邮箱,才需要用LATERAL VIEW explode展开数组:

SELECT 
  payload.action,
  c.author.email
FROM ghdata g
LATERAL VIEW explode(payload.commits) exploded_commits AS c

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 11:05:09