pyspark sql从嵌套表达式中的json字段中提取值

pysparksql extract value from a json field in a nested expression

我有一些数据看起来像:

{ "col1": "val1",
  "col2": "val2",
  "col3": "{ \"a\": \"A\", \"b\": \"B\", .... }"
 }

架构:

root:
 |-- col1: string (nullable = true)
 |-- col2: string (nullable = true)
 |-- col3: string (nullable = true)

根据特定条件,我需要 select col3.b

中的值

所以我有pyspark sql代码如下:

spark.sql(''' 
select 
col1, 
col2, 
case when col1 like .... then "yo" 
when col1 like .... then json_tuple(col3,'b') else null end as col_3_val 
from data ''').show()

这给了我错误

spark.sql.utils.AnalysisException: Generators are not supported when it's nested in expressions

然而当我运行

spark.sql(''' select json_tuple(col3,'b') as col_3_val from data ''').show()

我得到了预期的输出:

col_3_val
B

我是不是遗漏了什么或者有其他方法可以做到这一点吗?

而不是使用 json_tuple。使用 REGEXP_EXTRACT(col2, my_regex )

从列中提取 Json 值