Изменить значение вложенного столбца в DataFrame - PullRequest
0 голосов
/ 02 мая 2018

У меня есть датафрейм с двумя уровнями вложенных полей

 root
 |-- request: struct (nullable = true)
 |    |-- dummyID: string (nullable = true)
 |    |-- data: struct (nullable = true)
 |    |    |-- fooID: string (nullable = true)
 |    |    |-- barID: string (nullable = true)

Я хочу обновить значение столбца fooId здесь. Мне удалось обновить значение для первого уровня, например, столбец dummyID, используя этот вопрос в качестве ссылки Как добавить вложенный столбец в фрейм данных

Входные данные:

{
    "request": {
        "dummyID": "test_id",
        "data": {
            "fooID": "abc",
            "barID": "1485351"
        }
    }
}

выходные данные:

{
    "request": {
        "dummyID": "test_id",
        "data": {
            "fooID": "def",
            "barID": "1485351"
        }
    }
}

Как я могу сделать это, используя Scala?

1 Ответ

0 голосов
/ 02 мая 2018

Один из способов, хотя и громоздкий, - это полностью распаковать и воссоздать столбец путем явной ссылки на каждый элемент исходной структуры.

dataFrame.withColumn("person", 
    struct(
        col("person.age").alias("age),
        struct(
            col("person.name.first").alias("first"),
            lit("some new value").alias("last")).alias("name")))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...