Как развернуть строки в столбцы и собрать первое ненулевое значение, сгруппированное по ключу в Spark - PullRequest
0 голосов
/ 25 мая 2019

Я хочу сгруппировать набор данных временных рядов по отметке времени, где каждая строка в данной группе содержит столбец с именем «name», а затем объединить эти имена в столбцы и создать одну строку с первым ненулевым значением каждогоимя в качестве значения этого столбца.

Например, с учетом DataFrame, подобного этому:

+-----+---------+---------+
| ts  | name    | value   |
+-----+---------+---------+
| 1   | "temp"  | "72"    |
+-----+---------+---------+
| 1   | "humid" | "30"    |
+-----+---------+---------+
| 1   | "fan"   | "50%"   |
+-----+---------+---------+
| 2   | "temp"  | "70"    |
+-----+---------+---------+
| 2   | "humid" | "40"    |
+-----+---------+---------+
| 2   | "fan"   | "30%"   |
+-----+---------+---------+
| 3   | "temp"  | "68"    |
+-----+---------+---------+
| 3   | "humid" | "50"    |
+-----+---------+---------+
| 3   | "fan"   | "20%"   |
+-----+---------+---------+

Я хотел бы получить такой результат:

+-----+---------+--------+--------+
| ts  | temp    | humid  | fan    |
+-----+---------+--------+--------+
| 1   | "72"    | "30"   | "50%"  |
+-----+---------+--------+--------+
| 2   | "70"    | "40"   | "30%"  |
+-----+---------+--------+--------+
| 3   | "68"    | "50"   | "20%"  |
+-----+---------+--------+--------+

Я, очевидно, могу сделатьПоворот по имени, который приводит к строке на пару имя / значение, но тогда я не «свернул» строки, чтобы исключить нулевые значения, и имею одну строку, которая связывает все значения для данной временной отметки вместе.Я пытался .pivot("name").agg(first("value", true)), но это не сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...