Я пытаюсь написать запрос в PySpark, который получит правильное значение из массива.
Например, у меня есть dataframe с именем df с тремя столбцами, «companyId», «companySize» и «weightingRange.Столбец «companySize» - это количество сотрудников.Столбец weightingRange представляет собой массив со следующим
[ {"minimum":0, "maximum":100, "weight":123},
{"minimum":101, "maximum":200, "weight":456},
{"minimum":201, "maximum":500, "weight":789}
]
, поэтому фрейм данных выглядит следующим образом (weightingRange такой же, как и выше, его усеченный в приведенном ниже примере для более четкого форматирования)
+-----------+-------------+------------------------+--+
| companyId | companySize | weightingRange | |
+-----------+-------------+------------------------+--+
| ABC1 | 150 | [{"maximum":100, etc}] | |
| ABC2 | 50 | [{"maximum":100, etc}] | |
+-----------+-------------+------------------------+--+
Таким образом, для записи о размере компании = 150 мне нужно вернуть вес 456 в столбец с названием «companyWeighting»
Таким образом, он должен показать следующее
+-----------+-------------+------------------------+------------------+
| companyId | companySize | weightingRange | companyWeighting |
+-----------+-------------+------------------------+------------------+
| ABC1 | 150 | [{"maximum":100, etc}] | 456 |
| ABC2 | 50 | [{"maximum":100, etc}] | 123 |
+-----------+-------------+------------------------+------------------+
взглянул на
df.withColumn("tmp",explode(col("weightingRange"))).select("tmp.*")
, а затем присоединился, но пытался применить, что бы декартово данные.
Предложения приветствуются!