У меня есть приведенный ниже фрейм данных pyspark, который я создал, прочитав файл JSON, и я хочу распаковать значения в содержимом столбца и использовать ключи в качестве новых столбцов, а значения в качестве значений в одном и том же кадре данных. Как я мог это сделать? Нужно ли мне изменять файл JSON перед тем, как я прочитаю его как фрейм данных, или я могу сделать это как операцию над фреймом данных?
json структура файла:
{"account_id": "a01", "contents": [{"service_id": "S121", "price": 1256}, {"service_id": "S022", "price": 1149}], "date": "2020-03-22 05:53:53.358149"}
schema:
|-- contents: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- price: long (nullable = true)
| | |-- service_id: string (nullable = true)
|-- account_id: string (nullable = true)
|-- date: string (nullable = true)
generated table:
+--------------------+-----------+--------------------+
| contents|account_id | date |
+--------------------+-----------+--------------------+
|[[1256, S121],[11,..| a01|2020-01-17 05:53:...|
|[[556, S03], [114...| a01|2020-01-16 23:58:...|
and i would like it to be something like:
-----------+--------------------+-----+----------+
|account_id | date |price|service_id|
+-----------+--------------------+-----+----------+
| a01|2020-01-17 05:53:...| 1256| S121|
| a01|2020-01-17 05:53:...|1149 | S022 |