我有一个名为order
的表,如下所示:
| 身份证|战役|
| - ------|- ------|
| 第二章|[{"编号":" 1 ","职务":"试验"、"类型":"一个"},{" id":"2"、"职称":"测试2","类型":"两个"}]|
| 五个|[{"编号":" 3 ","职务":"测试3","类型":"三"}]|
我的期望:
| 身份证|活动ID|标题|类型|
| - ------|- ------|- ------|- ------|
| 第二章|1个|测验|一|
| 第二章|第二章|测试2|二|
| 五个|三个|测试3|三|
我的代码:
SELECT orderId AS id, id AS campaignid, title, type
FROM (
SELECT id AS orderId, inline_outer(from_json(campaigns, 'ARRAY<STRUCT<id: STRING, title: STRING, type: STRING>>'))
FROM order
);
我必须在subQuery中将id
字段重命名为orderId
,因为campaigns
字段包含一个id
键。
- 问:有没有办法指定Spark SQL中inline_outer函数生成的列名?**
我尝试了:
x一个一个一个一个x一个一个二个x
但是,上述两种方法并不符合Spark SQL的语法。
先谢谢你。
2条答案
按热度按时间kb5ga3dv1#
您需要
cast
from_json
输出并更改列名:uyto3xhc2#
以下是使用完整pyspark的解决方案: