Записки охотника

Удаление двойного заголовка таблицы

Мелкие радости
Рвав-рвав, сегодня я — собака-разузнака!

Перед вами 9-я заметка из нашего цикла «Мелкие радости», ниже мы рассмотрим такую проблему, как обработка двойной шапки в исходных данных.
Обычно подобна штукенция присутствует в данных при использовании файловой выгрузки (если она не самописная, конечно) из «материнской» системы, например, 1С и пр.
В общем, сегодня мы будем совместно познавать Power Query, используя, так сказать, классику жанра, поскольку подобная задача далеко не нова…

Пример:

В качестве исходных данных используется файл MS Excel, с таблицей, содержащий двойной заголовок следующего вида:

Таблица
Выручка по администраторам

Задача:

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

Решение:

  • Для начала необходимо импортировать данные в Power BI:

Таблица
Шаг 1: импорт данных в Power BI

  • Удалить все шаги до шага «Навигация», поскольку в настройке «по умолчанию» при загрузке происходит автоматическое повышение заголовков и автоматическое присвоение типов данных:

Таблица
Шаг 2: частичное удаление автоматических шагов

  • Транспонировать таблицу, использовав на вкладке «Преобразование» кнопку «Транспонировать»:

Таблица
Шаг 3: транспонирование таблицы

  • Объединить первые 2 столбца, поскольку шапка таблицы содержит 2 уровня, использовав на вкладке «Преобразование» кнопку «Объединить столбцы»:

Таблица
Шаг 4: объединение столбцов

Рвав-рвав, при объединении столбцов необходимо указать какой-нибудь разделитель, в нашем случае это знак равенства («=»).

  • Транспонировать получившуюся таблицу обратно:

Таблица
Шаг 5: обратное транспонирование таблицы

  • Поставить заголовки столбцов, например, воспользовавшись функционалом повышения заголовков:

Таблица
Шаг 6: простановка заголовков столбцов

  • Повышение заголовков повлечет за собой шаг изменения типа данных, который можно оставить.
  • Следующим шагом необходимо отменить свертывание «дополнительных» столбцов, для этого на вкладке «Преобразование» следует воспользоваться кнопкой «Отменить свертывание столбцов», использовав при этом функцию «Отменить свертывание других столбцов»:

Таблица
Шаг 7: отмена свертывания столбцов

  • Разделить столбец «Атрибут» по имеющемуся разделителю, то есть знаку равенства («=»), который использовался ранее в качестве разделителя, воспользовавшись кнопкой «Разделить столбец» на вкладке «Главная»:

Таблица
Шаг 8: разделение столбца по разделителю

  • Присвоить окончательные заголовки получившимся столбцам:

Таблица
Шаг 9: окончательное переименование столбцов

  • Далее следует заменить значение «Пусто» на значение «null» в столбце «Город», воспользовавшись кнопкой «Замена значений» на вкладке «Преобразование»:

Таблица
Шаг 10: замена значения "Пусто" на значение "null"

  • Последним шагом является корректное заполнение ячеек, содержащих значение «null», по столбцу «Город». Данное действие можно выполнить автоматически, выбрав опцию «Заполнить вниз», имеющуюся у кнопки «Заполнить» на вкладке «Преобразование»:

Таблица
Шаг 11: заполнение значений "null" корректными данными

  • После последовательного выполнения перечисленных шагов для сохранения внесенных изменений необходимо нажать кнопку «Закрыть и применить», расположенную на закладке «Главная».

Извините, но я уже все, лапы ломит, и хвост отваливается…
Ваш Смайл

P. S. Рвав-рвав, после публикации ссылки на Facebook, и, собственно, просмотра материала, поступило предложение заполнить значения «null» сразу после 1-го транспонирования. Я с этим согласен, так, действительно, у нас будет потом чуть меньше шагов, но текст оставляю в оригинальном виде.

P. P. S. Рва-ва-вав, собака Смайл прислушивается к аудитории (по крайней мере, иногда, и к некоторым товарищам :-Р)