我有一个DataFrame,它有一个结构类型的单列,包含一个数组。
users_tp_df.printSchema()
root
|-- x: struct (nullable = true)
| |-- ActiveDirectoryName: string (nullable = true)
| |-- AvailableFrom: string (nullable = true)
| |-- AvailableFutureAllocation: long (nullable = true)
| |-- AvailableFutureHours: double (nullable = true)
| |-- CreateDate: string (nullable = true)
| |-- CurrentAllocation: long (nullable = true)
| |-- CurrentAvailableHours: double (nullable = true)
| |-- CustomFields: array (nullable = true)
| | |-- element: struct (containsNull = true)
| | | |-- Name: string (nullable = true)
| | | |-- Type: string (nullable = true)
| | | |-- Value: string (nullable = true)
我正在尝试将CustomFields数组列转换为3三列:
1.国家;
1.外部;
1.服务。
例如,我有这些值:
并且该行除外的最终 Dataframe 输出将是:
有谁能帮我实现这个目标吗?
谢谢大家!
2条答案
按热度按时间j5fpnvbx1#
这是可行的:
样品输入:儿子-
{'x': {'CurrentAvailableHours': 2, 'CustomFields': [{'Name': 'Country', 'Value': 'Italy'}, {'Name': 'Service', 'Value':'Dev'}]}}
输入结构:
输出:
输出结构(可以删除ID):
yi0zb3m42#
考虑下面的模型结构,类似于你的例子中的模型结构,你可以使用内联函数以sql的方式完成它:
结果:
实体模型结构: