Scala Заполнить список карт путем разделения - PullRequest
0 голосов
/ 27 мая 2020

У меня набор данных из базы данных выглядит так:

rows: List[Map[String, String]

0: ("attribute1","value1"), ("attribute2", "value2"), ("attribute3", "value3,value4,value5")
...

Расчет для attribute3 выполняется функцией GROUP_CONCAT в сценарии MySQL в ночной задаче, поэтому я не могу заполнить данные в на стороне базы данных.

Мне нужно заполнить этот набор данных для attribute3 путем разделения через разделитель ",".

Ожидаемый результат для приведенного выше примера:

rowsPopulated: List[Map[String, String]

0: ("attribute1","value1"), ("attribute2", "value2"), ("attribute3", "value3")
1: ("attribute1","value1"), ("attribute2", "value2"), ("attribute3", "value4")
2: ("attribute1","value1"), ("attribute2", "value2"), ("attribute3", "value5")
...

Я могу разделить все значения на списки с помощью следующего кода, но это даже не близко к моей конечной цели ...

rows.map(x => x.get("attribute3").getOrElse("").split(','))

Как мне этого добиться?

1 Ответ

2 голосов
/ 27 мая 2020

Как насчет этого:

val rows = List(Map(
  "attribute1" -> "value1", 
  "attribute2" -> "value2", 
  "attribute3" -> "foo,bar,baz"
))

rows.flatMap( row =>
  row.getOrElse("attribute3", "").split(",")
     .map(a3 => row.updated("attribute3", a3))
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...