我正在尝试用嵌套 struct
在多列中键入(见下文)。我正在使用的结构模式类似于 {"foo": 3, "bar": {"baz": 2}}
.
理想情况下,我想把上面的内容扩展成两列( "foo"
以及 "bar.baz"
). 然而,当我尝试使用 .select("data.*")
(其中 data
是结构列),我只得到列 foo
以及 bar
,在哪里 bar
仍然是一个 struct
.
有没有一种方法可以扩展这两层的结构?
我正在尝试用嵌套 struct
在多列中键入(见下文)。我正在使用的结构模式类似于 {"foo": 3, "bar": {"baz": 2}}
.
理想情况下,我想把上面的内容扩展成两列( "foo"
以及 "bar.baz"
). 然而,当我尝试使用 .select("data.*")
(其中 data
是结构列),我只得到列 foo
以及 bar
,在哪里 bar
仍然是一个 struct
.
有没有一种方法可以扩展这两层的结构?
2条答案
按热度按时间sdnqo3pr1#
您可以选择
data.bar.baz
作为bar.baz
:在Pypark中:
dxxyhpgq2#
最后,我使用了以下函数递归地“展开”分层结构:
基本上,它一直在挖掘
Struct
字段并保持其他字段不变,这种方法消除了需要很长时间df.select(...)
当Struct
有很多领域。代码如下: