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 值
我有一些数据看起来像:
{ "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 值