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

Databricks Delta Lake读取JSON后提取members数组指定字段方法

问题原因

你遇到的报错是因为 data.members 是数组类型,Spark SQL 中的 * 展开语法仅支持作用于结构体类型,无法直接对数组执行展开操作,所以会触发类型不匹配的报错。

解决方案(纯SQL实现)

使用 LATERAL VIEW EXPLODE 先将数组成员拆分为独立行,再提取对应字段即可,写法如下:

%sql
SELECT 
  member.id AS id,
  member.name AS name,
  member.profile AS profile
FROM vw_TestView
LATERAL VIEW EXPLODE(data.members) t AS member
-- 如果需要限制返回行数避免结果过大,可以加 LIMIT 语句,比如 LIMIT 1000

如果需要保留 members 数组为空的原始行,可以将 EXPLODE 替换为 EXPLODE_OUTER。

可选PySpark实现方案

如果你更习惯用PySpark写逻辑,等效实现如下:

from pyspark.sql.functions import explode

member_df = spark.table("vw_TestView") \
    .select(explode("data.members").alias("member")) \
    .select("member.id", "member.name", "member.profile")

# 可按需将结果写入临时视图供后续SQL查询使用
member_df.createOrReplaceTempView("vw_member_info")

内容的提问来源于stack exchange,提问作者Mr.Human

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:27:03