Конвертируем список в таблицу средствами Power Query

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

Конечно, можно использовать стандартный инструмент PIVOT из арсенала Power Query. Но при отсутствии ключевого столбца процесс усложняется.

Рассмотрим, как можно выполнить требуемое преобразование стандартными средствами Power Query.

Задача: имея исходный csv-файл подобного вида

Исходные данные - список
исходный список

требуется получить таблицу:

Результирующая таблица
финальная таблица

Для начала загрузим данные в редактор запросов:

загрузка данных

Чтобы преобразовать данные из столбцов в строки, попробуйте использовать стандартный инструмент PIVOT. Продвинутые пользователи могут использовать PIVOT с агрегацией.

Перебрали все варианты? Надоело? Читаем дальше!

Для начала немного очистим данные: удалим пустые строки и первую ненужную нам строку с заголовками:

Удаляем строку с заголовками
Удаляем пустые строки

Для применения преобразования PIVOT нам нужен индексный столбец. Причем в нашем наборе индекс нужен для каждого блока данных:

Блоки данных в списке
блоки данных

Воспользуемся стандартными инструментами Power Query, добавим столбец индексов в нашу таблицу:

Добавление индекса Power Query
добавление индекса

Результат выполнения команды:

добавлен столбец индексов
добавлен столбец индексов

Если у нас блоки содержат одинаковое количество строк, то для дальнейших операций можно было бы использовать деление. Но, рассмотрим более универсальный вариант, на случай, если количество строк в блоках может отличаться.

Добавим условный столбец для первых строк набора данных:

Добавление условного столбца
Добавление условного столбца

Получим результат:

условный столбец
Условный столбец

Получили уникальное значение индекса для каждого блока данных. Заполним этим значением строки ниже:

заполнить вниз
заполнить вниз

Результат применения команды:

проиндексировали каждый блок данных
проиндексировали каждый блок данных

Столбец с индексами нам больше не нужен, удалим его:

удалили столбец индексов
удалили столбец индексов

На этом подготовительные действия закончены. Теперь для преобразования строк в столбцы можем применить PIVOT:

преобразуем строки в столбцы
преобразуем строки в столбцы

Параметры вызова функции должны быть такие:

параметры функции
параметры функции

Хотя созданный нами столбец с индексами блоков в параметрах не указан, он используется внутри функции для обработки данных.

В получившейся таблице первый столбец нам больше не нужен, его можно удалить:

ненужный столбец удаляем
ненужный столбец удаляем

В результате всех проделанных действий получаем таблицу требуемого вида:

финальная таблица
финальная таблица

Статья подготовлена по материалам блога RADACAD.

Чистых данных и информативных дашбордов!

(Visited 1 029 times, 1 visits today)

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

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