【发布时间】:2019-08-29 19:00:19
【问题描述】:
我想将多个结构列合并到一个数组中。
我尝试了 array(col1, col2) from .. 但它最终导致数据类型不匹配,即使所有 struct 列都是相同的类型。
查询 ->
select array(struct(f_name_add, True as is_data_found),struct(l_name_add, True as is_data_found)) as tag from (select array(map('value',f_name),map('value',f_add)) as f_name_add, array(map('value',l_name),map('value',l_add)) as l_name_add from (select distinct f_name, f_add, l_name, l_add from db.tabl1 where id = 'aaa')
输入
Sample Table
id f_name f_add l_name l_add
aaa tom in nats in
预期输出:
"tag":
[
{
"f_name_add": [
{
"value":"tom"
},
{
"value": "in"
}
],
"is_data_found": true
},
{
"l_name_add": [
{
"value":"nats"
},
{
"value": "in"
}
],
"is_data_found": true
}
]
错误:
cannot resolve 'array(named_struct('f_name_add', __auto_generated_subquery_name.f_name_add, 'is_data_found', true), named_struct('l_name_add', __auto_generated_subquery_name.l_name_add, 'is_data_found', true))' due to data type mismatch: input to function array should all be the same type, but it's [struct<f_name_add:array<map<string,string>>,is_data_found:boolean>, struct<l_name_add:array<map<string,string>>,is_data_found:boolean>]
【问题讨论】:
标签: struct pyspark apache-spark-sql