о визуализации данных и развитии BI-систем
канал в телеграмме | подборки | видео

Широкие и длинные таблицы

Часто данные хранятся в виде таблиц. Таблицы бывают «широкие» и «длинные».

Человеку чаще удобнее читать матричные таблицы, а вот машины обычно используют таблицы. Табло может работать и с тем, и с тем, но в зависимости от задач подходят разные варианты. Если таблица широкая, то в Табло есть специальный функционал Measure Values and Measure Names, однако он не позволяет использовать все привычные функции Табло, которые отлично работают с длинной таблицей. Например, по-другому работает фильтрация, привязка цветов и т. п.

Пересобрать таблицу из широкого формата в длинный, можно разными путями:
в экселе, с помощью формул или скрипта,
в экселе, с помощью надстройки Power Query,
в экселе 2016 и новее, с помощью Get & Transform,
R, при помощи библиотеки reshape,
в табло, при помощи встроенной функции.

Пересборка в табло не идеальна: делается один раз для всего сета и не супер наглядная и контролируемая. Она отлично подходит для небольших данных, а вот с большими я бы поработал на уровне источника данных.

Посмотрим, как персоборать таблицу в «старом» экселе. Есть данные по кол-ву внутренней миграции в разные части Великобритании. В каждой строке откуда приехали иммигранты, куда и сколько людей каждой из религий. Нужно превратить это с длинную таблицу, где в каждой строке будет только название региона куда приехали, название религии и количество человек.

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

Вставим эту таблицу как текст и поменяем названия столбцов:

Скачиваем и ставим надстройку Power Query — https://www.microsoft.com/en-us/download/details.aspx?id=39379
В экселе открываем её и задаем нужные преобразования:

После этого переименовываем столбцы и сохраняем результат:

Вуаля, наши данные готовы к работе с табло.

Видео, как обрабатывались данные — http://joxi.ru/YmEa0lVf068G3m

Подписаться на блог
Отправить
Поделиться
Запинить
Дальше
1 комментарий
Иван Дубовский 2021

Длинные и узкие таблицы — хорошо с точки зрения производительности и поведения табло. Если категории товаров или школьные предметы у тебя в отдельных столбцах, то запивоть их в строки и будет счастье.
Представим другую ситуацию: у тебя в одном столбце «Метрики» идут прибыль, выручка, налоги и т. д., и тебе надо выводить эти метрики по отдельности через «IF Метрика = прибыль THEN sum(метрика)». Т. е. данные организованы вроде правильно — столбцы в строки, узко, длинно, но при этом ты заставляешь табло производить вычисления. Как это повлияет на производительность?

Роман Бунин 2021

>Представим другую ситуацию: у тебя в одном столбце «Метрики» идут прибыль, выручка, налоги и т. д., и тебе надо выводить эти метрики по отдельности через «IF Метрика = прибыль THEN sum(метрика)». Т. е. данные организованы вроде правильно — столбцы в строки, узко, длинно, но при этом ты заставляешь табло производить вычисления. Как это повлияет на производительность?
А зачем делать расчет через IF? Можно же просто отфильтровать значения через фильтр, кинув поле «метрика» в фильтры. Производительность и подход нужно выбирать в каждом конкретном случае. В длинном формате ещё, например, неудобно хранить метрики разного типа (процентные и просто числа), так как приходиться делать доп. расчеты, чтобы правильно отображать процентные метрики.