У меня есть столбец, содержащий массив телефонных номеров, представленных в виде структур, и мне нужно поместить их в три столбца с помощью атрибута "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
Этот ответ показывает, как поместить каждый элемент массива в отдельный столбец.
Как разбить массив на несколько столбцов в 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 числа, но никогда не будет иметь более одного числа каждого типа.