Учитывая кадр данных pyspark, содержащий описания иерархии, как я могу извлечь полную структуру иерархии для данного иде ⇐ Python
Учитывая кадр данных pyspark, содержащий описания иерархии, как я могу извлечь полную структуру иерархии для данного иде
У меня есть такая таблица:
columns = ["Structure_ID", "Position", "Hierarchy", "Key", "Key_Text"] data = [(1, 101, 1, 10000, "Европа"), (1, 102, 2, 11 000, "Франция"), (1, 103, 3, 11 100, "Париж"), (1, 104, 1, 20000, «Азия»), (1, 105, 2, 21000, «Япония»)] df_original = spark.createDataFrame(данные).toDF(*столбцы) df_original.show() #+------------+--------+---------+-----+--------+ #|Идентификатор_структуры|Позиция|Иерархия| Ключ|Текст_ключа| #+------------+--------+---------+-----+--------+ #| 1| 101| 1|10000| Европа| #| 1| 102| 2|11000| Франция| #| 1| 103| 3|11100| Париж| #| 1| 104| 1|20000| Азия| #| 1| 105| 2|21000| Япония| #+------------+--------+---------+-----+--------+ Я хочу иметь возможность получить для данного идентификатора структуры и позиции, например. Structure_ID = 1 и Position = 105, ключевой текст из этой позиции, а также из любых верхних уровней, т. е. в этом примере из Азии и Японии.
Я преобразовал исходную таблицу очень громоздким способом (множество объединений и временное создание нового столбца для каждого уровня иерархии) в такой вид:
#+------------+--------+---------+---------- ------------+ #|Идентификатор_структуры|Позиция|Иерархия| Ключ_массив| #+------------+--------+---------+---------------- ------+ #| 1| 101| 1| [Европа]| #| 1| 102| 2| [Европа, Франция]| #| 1| 103| 3|[Европа, Франция, Париж| #| 1| 104| 1| [Азия]| #| 1| 105| 2| [Азия, Япония]| #+------------+--------+---------+---------------- ------+ Если выходной формат имеет смысл, мне интересно, как эффективно преобразовать исходную таблицу в этот. В противном случае я хотел бы знать, что имело бы смысл, возможно, есть ли в Python/pyspark древовидная структура?
У меня есть такая таблица:
columns = ["Structure_ID", "Position", "Hierarchy", "Key", "Key_Text"] data = [(1, 101, 1, 10000, "Европа"), (1, 102, 2, 11 000, "Франция"), (1, 103, 3, 11 100, "Париж"), (1, 104, 1, 20000, «Азия»), (1, 105, 2, 21000, «Япония»)] df_original = spark.createDataFrame(данные).toDF(*столбцы) df_original.show() #+------------+--------+---------+-----+--------+ #|Идентификатор_структуры|Позиция|Иерархия| Ключ|Текст_ключа| #+------------+--------+---------+-----+--------+ #| 1| 101| 1|10000| Европа| #| 1| 102| 2|11000| Франция| #| 1| 103| 3|11100| Париж| #| 1| 104| 1|20000| Азия| #| 1| 105| 2|21000| Япония| #+------------+--------+---------+-----+--------+ Я хочу иметь возможность получить для данного идентификатора структуры и позиции, например. Structure_ID = 1 и Position = 105, ключевой текст из этой позиции, а также из любых верхних уровней, т. е. в этом примере из Азии и Японии.
Я преобразовал исходную таблицу очень громоздким способом (множество объединений и временное создание нового столбца для каждого уровня иерархии) в такой вид:
#+------------+--------+---------+---------- ------------+ #|Идентификатор_структуры|Позиция|Иерархия| Ключ_массив| #+------------+--------+---------+---------------- ------+ #| 1| 101| 1| [Европа]| #| 1| 102| 2| [Европа, Франция]| #| 1| 103| 3|[Европа, Франция, Париж| #| 1| 104| 1| [Азия]| #| 1| 105| 2| [Азия, Япония]| #+------------+--------+---------+---------------- ------+ Если выходной формат имеет смысл, мне интересно, как эффективно преобразовать исходную таблицу в этот. В противном случае я хотел бы знать, что имело бы смысл, возможно, есть ли в Python/pyspark древовидная структура?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение