Data Integration — Kettle | Шаги «Row normaliser» и «Row denormaliser». ( UNPIVOT / PIVOT )

Reading Time: 2 minutes

Добрый день уважаемый читатель, если ты конечно вообще есть. Сегодня мы рассмотрим задачу, которая будет часто встречаться у вас при обработке всевозможных данных. Я не совсем уверен в точности определений, но это будет звучать примерно так: «PIVOTE/UPIVOTE; Транспонирование; Нормализация/Денормализация;» . Я прошу поправить меня, если я не совсем корректен.

Для человека, который уже не первый день знаком с kettle pentaho data integration, предлагаю посмотреть документацию по шагам «Row Normaliser» и «Row DeNormaliser»  . Если вы не знаете буржуйский или не совсем понятно о чём идёт речь, или что совсем будет странно, вам нравиться моё повествование, то оставайтесь с нами.

I. Row DeNormaliser / PIVOT

Дано:

Name SUM Month
Иванов Иван Иванович 22000 January
Иванов Иван Иванович 25000 February
Иванов Иван Иванович 21000 March
Иванов Иван Иванович 22000 April
Петров Николай Фёдорович 24500 January
Петров Николай Фёдорович 24500 February
Петров Николай Фёдорович 24500 March
Петров Николай Фёдорович 24500 April
Петров Николай Фёдорович 24500 May
Сидоров Алексей Григорьевич 23000 January
Умнова Василиса Игоревна 4560 March
Некрутая Алина Ивановна 23455 May

Нужно получить:

NAME January February March April May
Иванов Иван Иванович 22000 25000 21000 22000
Петров Николай Фёдорович 24500 24500 24500 24500 24500
Сидоров Алексей Григорьевич 23000
Умнова Василиса Игоревна  4560
Некрутая Алина Ивановна 23455

Приступим:

1) Создаём трансформацию.

Рис.1 - Создание новой трансформации

Рис.1 — Создание новой трансформации

2) Размещаем основные компоненты. (Зависит от типа источника данных. Я использую csv, т.к. самой распространённой и простой является обработка текстовых файлов.)

Рис. 2 - Основные шаги трансформации

Рис. 2 — Основные шаги трансформации

3) Настраиваем ключевой шаг в этой трансформации (Row denormaliser).

Рис. 3 - Настройки шага "Row denormaliser"

Рис. 3 — Настройки шага «Row denormaliser»

II. Row Normaliser / UNPIVOT

Дано:

NUMBER NAME INNER_PHONE ADDRESS ICQ
1 Иванов Иван Иванович 453 lenina 10 23 3242352234
2 Петров Николай Фёдорович 765 Belkina 20 1 3242352234
3 Сидоров Алексей Григорьевич 327 Minina 3 4 3242352234
4 Умнова Василиса Игоревна 876 street 2 3242352234
5 Некрутая Алина Ивановна 3346 street 3 3242352234

Нужно получить:

NUMBER NAME TYPE VALUE
1 Иванов Иван Иванович INNER_PHONE 453
1 Иванов Иван Иванович ADDRESS lenina 10 23
1 Иванов Иван Иванович ICQ 3242352234
2 Петров Николай Фёдорович INNER_PHONE 765
2 Петров Николай Фёдорович ADDRESS Belkina 20 1
2 Петров Николай Фёдорович ICQ 3242352234
3 Сидоров Алексей Григорьевич INNER_PHONE 327
3 Сидоров Алексей Григорьевич ADDRESS Minina 3 4
3 Сидоров Алексей Григорьевич ICQ 3242352234
4 Умнова Василиса Игоревна INNER_PHONE 876
4 Умнова Василиса Игоревна ADDRESS street 2
4 Умнова Василиса Игоревна ICQ 3242352234
5 Некрутая Алина Ивановна INNER_PHONE 3346
5 Некрутая Алина Ивановна ADDRESS street 3
5 Некрутая Алина Ивановна ICQ 3242352234

 

1) Создаём трансформацию.

Рис.1 - Создание новой трансформации

Рис. 4 — Создание новой трансформации

2) Размещаем основные компоненты. (Зависит от типа источника данных. Я использую csv, т.к. самой распространённой и простой является обработка текстовых файлов.)

Рис. Трансформация

Рис. 5 — Трансформация

3) Настраиваем ключевой шаг в этой трансформации (Row normaliser).

Рис. - Настройки шага

Рис. 6 — Настройки шага «Row normaliser»

Всё достаточно просто и не требует специальных навыков, что не может не радовать простого пользователя.

III. Примечания

* Ссылка на пример: RowNormaliser

* При переносе скрипта не забудьте указать параметр SCRIPT_HOME у трансформации. Для этого необходимо нажать правой кнопкой мыши и в контекстном меню выбрать пункт «Transformation settings» или нажать комбинацию клавиш Ctrl+T.

Рис. № - Настройка параметров трансформации

Рис. 7 — Настройка параметров трансформации

* P. S. Видео к сожалению подготовить мне не удалось, жду микрофон из Поднебесной. Иконки изменились в версии 5.4. Так что не пугайтесь. 🙂

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *