【发布时间】:2019-08-26 19:15:42
【问题描述】:
我有一列包含表示为结构的电话号码数组,需要通过“type”属性(phone1, phone2, fax) 将它们分成三列。
这是该列的两个示例值。
[{"number":"000-000-0000","type":"Phone1"},{"number":"000-000-0001","type":"Phone2"},{"number":"000-000-0002","type":"Fax"}]
[{"number":"000-000-1000","type":"Phone1"},{"number":"000-000-1001","typeCode":"Fax"},{"number":"000-000-1002","type":"Phone2"}]
我想将每一列分成三列,每种类型一列。 我想要这样的东西:
Phone1 Phone2 Fax
000-000-0000 000-000-0001 000-000-0002
000-000-1000 000-000-1002 000-000-1001
这个答案展示了如何将数组的每个元素放入自己的列中。 How to explode an array into multiple columns in Spark
这让我走到了一半,但我不能依赖数组中项目的顺序。如果我这样做,我会得到类似的结果,第二列中的 Phone2 和 Fax 值不合适。
Phone1 Phone2 Fax
000-000-0000 000-000-0001 000-000-0002
000-000-1000 000-000-1001 000-000-1002
如何使用类型值将单列值拆分为三列?一个数组可以有 0-3 个数字,但每种类型的数字永远不会超过一个。
【问题讨论】:
标签: json scala apache-spark schema