Как создать новые столбцы из значения строки - PullRequest
0 голосов
/ 09 ноября 2018

Я хочу создать новые столбцы из значения строк, используя spark sql 2.x и java 8; что-то вроде этого:

Оригинал:

POLICY_NO | FIRST_NAME | LAST_NAME |    DOB      |  SEX |
--------------------------------------------------------
1234      |   JOHN     |   HILL    |  01/01/1978 |  0   |
1234      |   JILL     |   HILL    |  10/10/1980 |  1   |
5678      |   JAMES    |   PIKE    |  05/05/1950 |  0   |
5678      |   JOAN     |   MAY     |  04/04/1955 |  1   |

ожидаемые результаты:


POLICY_NO | FIRST_NAME |    LAST_NAME |      DOB   | SEX  | FIRST_NAME2  | LAST_NAME2   | DOB2          | SEX2
---------------------------------------------------------------------------------------------------------------
1234      |   JOHN     |   HILL       | 01/01/1978 | 0    | JILL         |    HILL      |   10/10/1980  |   1
5678      |   JAMES    |   PIKE       | 05/05/1950 | 0    | JOAN         |    MAY       |   04/04/1955  |   1

Спасибо

1 Ответ

0 голосов
/ 09 ноября 2018

Вы можете попробовать использовать функцию агрегирования условий.


Запрос № 1

SELECT POLICY_NO,
       MAX(CASE WHEN SEX= 0 THEN FIRST_NAME END) FIRST_NAME,
       MAX(CASE WHEN SEX= 0 THEN LAST_NAME END) LAST_NAME,
       MAX(CASE WHEN SEX= 0 THEN DOB END) DOB,
       MAX(CASE WHEN SEX= 0 THEN SEX END) SEX,
       MAX(CASE WHEN SEX= 1 THEN FIRST_NAME END) FIRST_NAME2,
       MAX(CASE WHEN SEX= 1 THEN LAST_NAME END) LAST_NAME2,
       MAX(CASE WHEN SEX= 1 THEN DOB END) DOB2,
       MAX(CASE WHEN SEX= 1 THEN SEX END) SEX2
FROM T
GROUP BY POLICY_NO;

| POLICY_NO | FIRST_NAME | LAST_NAME | DOB        | SEX | FIRST_NAME2 | LAST_NAME2 | DOB2       | SEX2 |
| --------- | ---------- | --------- | ---------- | --- | ----------- | ---------- | ---------- | ---- |
| 1234      | JOHN       | HILL      | 01/01/1978 | 0   | JILL        | HILL       | 10/10/1980 | 1    |
| 5678      | JAMES      | PIKE      | 05/05/1950 | 0   | JOAN        | MAY        | 04/04/1955 | 1    |

Просмотр на БД Fiddle

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