У меня есть структура данных, которая выглядит как:
ID purchase_name purchase_id
A001 {A: a} {One: 1}
A002 {A: a, B: b} {One: 1, Two, 2}
A003 {C: a} {Three: 1}
Подумайте об этом так: {A, B, C ...} - это название бренда (т.е. Nike, Adidas ...); {a, b, c ...} - категории под брендом (рубашки, шорты, обувь ...); (Один, два, три ...} являются внутренним идентификатором для названий брендов и (1, 2, 3 ...) являются внутренним идентификатором для названий категорий. Теперь я хотел бы развернуть его до:
ID Brand_name Brand_id Category_name Category_id
A001 A One a 1
A002 A One a 1
A002 B Two b 2
A003 C Three a 1
Если есть только один столбец карты для взрыва, например, покупка_имя, я могу использовать разнесение для создания столбца имя_бренда и столбца имя_категории. Однако я пытаюсь использовать posexplode, чтобы получить переменную позиции, чтобы исключить несколько строк, которые будут сгенерированы для A001, но я обнаружил, что posexplode применим только к массивам, а не к типу данных карты.