Функции уровня детализации (LOD) в Tableau, 1 часть

Что такое уровень детализации? (LOD)

Уровень детализации (Level of detail (LOD)) – это возможность, которая впервые появилась в Tableau Desktop v9. Несмотря на то, что она дает большую гибкость и позволяет контролировать использование данных в визуализации, до конца понять ее смысл может быть нелегко.

Полки Rows и Columns

Чтобы понять, что такое уровень детализации, а также когда, где и почему ее нужно использовать, давайте сначала рассмотрим, в чем заключается идея детализации. На детализацию области построения в первую очередь влияют три инструмента визуализации. Первые два – это полки Rows (Ряды) и Columns (Колонки). Детализация определяется шкалами измерения, которые используются для  группировки искомых величин. Неважно, помещаете вы шкалу измерения на полку Rows (Ряды) или на полку Columns (Колонки), это влияет лишь на обозначение осей – получается или гистограмма с горизонтальными столбцами, или с вертикальными.

Например, если вы поместите State (Штат) на полку Rows (Ряды), визуализация разобьет значения величин исходя из этого уровня детализации.

Tableau LOD: Segmenting by State

В примере выше в области построения сумма продаж (SUM) будет разбита по штатам (State), например, так:

Sum of sales by State in Tableau

Если к примеру выше добавить еще одну шкалу измерения, скажем, вставить Category (Категория) после State (Штат), то на гистограмме мы получим большую детализацию и меньшую обобщенность. Другими словами, мы увеличили уровень детализации. Получится примерно следующее:

Adding Category after State in Tableau

Полка Detail (или кнопка Detail)

Другим способом определения уровня детализации в Tableau Desktop является полка Detail (Детализация) на карточке Marks (Маркеры). Ее также обычно называют кнопкой Detail (Детализация). Перетаскивая шкалу измерения на полку Detail (Детализация), мы влияем на визуализацию, и характер влияния зависит от типа диаграммы. Давайте возьмем точечную диаграмму со значениями Profit (Прибыль) и Sales (Продажи) по соответствующим осям:

Scatter Plot of Profit and Sales in Tableau

Сейчас точечная диаграмма содержит только одну точку, потому что измеренные значения не сегментированы ни по одной шкале измерений, или потому что результаты не разукрупнены. Другими словами, уровень детализации наиболее обобщен. Давайте увеличим детализацию, перетащив Order ID (Идентификатор заказа) на полку Detail (Детализация):

Tableau Detail Card

В этом случае, добавляя шкалу измерения на полку Detail (Детализация), мы сильно изменяем область построения. На точечную диаграмму это влияет следующим образом:

New Tableau Scatter Plot After Adding a Dimension to Detail

Теперь для каждого отдельного Order (Заказа) есть свой маркер, что делает эту визуализацию менее общей и более детализированной. Добавляя цвет или изменяя форму маркера можно сделать эту точечную диаграмму более легкой для восприятия.

Level of Detail (LOD) Calculations
(Формулы уровня детализации)

Формулы уровня детализации (LOD) дают четвертый способ определения уровня детализации. Самое замечательное в уровне детализации Tableau – это возможность задавать ее независимо для шкал измерения, используемых в визуализации. Перетаскивая поле на полку Rows (Ряды), Columns (Колонки) или Detail (Детализация), мы изменяем всю область построения. Уровень детализации (LOD) позволяет задавать нужный уровень детализации для конкретного поля независимо от области построения.

Работа с функцией INCLUDE

Начнем с данных

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

Давайте представим очень простую таблицу, содержащую поля: OrderID (ID заказа), Customer Name (Имя клиента) и Sales (Продажи). Вот фрагмент наших данных, первые двенадцать строк:

Basic table

В качестве примера давайте выполним агрегацию, получив среднее значение. Самый высокий уровень агрегации, и, следовательно, самый низкий уровень детализации – это просто среднее значение всех двенадцати записей примерного набора данных. Это же относится и к полю OrderID (ID Заказа), которое будет выступать первичным ключом данной таблицы. Таким образом, OrderID по умолчанию является высшим уровнем детализации.

Averaging by sales

Я сложил все значения в колонке, а затем разделил на общее число строк, получилось $3059,00 деленное на 12. Результатом данной агрегации будут средние продажи на запись – $254,92.

В дашборде Tableau это будет выглядеть так:

AVG(Sales) in Tableau

Давайте увеличим уровень детализации, для чего учтем другое измерение из нашего примерного источника данных Customer Name (Имя клиента). Я хочу, чтобы Tableau ответил на мой вопрос:

Каков средний объем продаж на одного клиента?

Давайте отсортируем таблицу по полю Customer Name (Имя клиента):

Resorted table by Customer Name

Теперь давайте сгруппируем все заказы по полю Customer Name (Имя клиента) и сложим продажи для каждого клиента:

Group by Customer Name and sum of sales by customer

Теперь мы можем получить среднее значение, как мы сделали это выше, суммируя все значения в колонке и разделив на количество рядов. Поскольку всего клиентов 8, то в данном случае, делителем будет выступать число восемь, хотя общее количество записей 12. В результате получим $382,39 на клиента.

Я изменил уровень детализации. До вычисления уровня детализации, получение среднего объема продаж на одного клиента означало бы включение поля Customer Name (Имя клиента) в вашу визуализацию. Я получил то же значение, включив общую сумму Grand Total, агрегированную в среднее значение в этом примере, используя имя клиента (Customer Name) в качестве измерения:

Sum(Sales) + Customer Name in Tableau

Давайте посмотрим, как можно выполнить те же вычисления в Tableau без добавления к визуализации поля Customer Name (Имя пользователя).

Синтаксис уровня детализации

Но сначала  познакомимся с синтаксисом, который использует Tableau для вычисления уровня детализации. В редакторе Вычисляемых полей дашборд Tableau использует цветовое кодирование различных элементов вычислений. Функции обозначены синим. Поля – оранжевым. Параметры – фиолетовым. Уровень детализации – тёмно-синим.

Вот наш синтаксис:

{INCLUDE [dim1]: aggregate expression}

Где dim1 – измерение, а aggregate expression – выражение для агрегации (прим. пер.)

Tableau по мере ввода будет предлагать автозавершение выражения для уровня детализации. Однако при этом закрывающая скобка не добавляется. Убедитесь, что добавили ее, в противном случае вы получите следующее сообщение об ошибке:

Tableau says

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

{INCLUDE [dim1], [dim2] : aggregate expression}

Include LOD

Вот как можно получить в дашборде Tableau тот же уровень детализации для примера выше, в котором мы получили средние продажи на клиента. Сначала  создадим вычисляемое поле, которое я назвал LOD Sales Include Customer Name (Уровень детализации продаж включая имя клиента). Помните, сначала необходимо просуммировать наши значения Sales (Продажи) для нового уровня детализации Customer Name (Имя клиента):

{INCLUDE [Customer Name]: SUM([Sales])}

Теперь можно выполнить агрегацию вычисляемого поля при помощи среднего, при использовании его в визуализации. Вот так это будет выглядеть в Tableau:

Include Calculation in Tableau Success!

Получилось! Получилось правильное значение средних продаж по всем заказам ($254,92), и правильное значение средних продаж на клиента ($382,38).

Обратите внимание, что мы не использовали Customer Name (Имя клиента) ни в одной из трех областей, которые задают уровень детализации – Rows (Ряды), Columns (Колонки) или Detail (Детализация). Мы использовали вычисление уровня детализации чтобы Включить имя пользователя в уровень детализации. Можно видеть, что таким образом мы получили куда большую гибкость и контроль над нашей визуализацией.

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.