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

Уровень детализации – вычисления с исключением (Exclude LOD) 

Пример использования

В наших примерах в данной статье мы будем использовать источник данных Superstore Sales, который можно найти как в уроках Tableau Fundamentals (Основы Tableau), так и в уроках Tableau Advanced (Углубленное изучение Tableau). Давайте создадим табличку:

Basic Tableau view

На визуализации видна сумма продаж по каждому городу (City) с дальнейшим разделением по штату (State) и стране/области (Country/Region) с фильтром «Только США» (USA-only).Если мы захотим показать продажи по штату или по стране вместе с продажами по городу, сделать это будет непросто. Даже изменение сортировки измерений лишь отчасти повлияло бы на внешний вид визуализации.

В любом случае, столбец Sales (Продажи) имел бы те же значения, что и в предыдущей визуализации:

Re-ordered dimensions in our Tableau view

Единственный способ получения желаемого результата заключается в создании значения Totals (Итоги) в самом низу каждой панели, где будут выведена сумма значений по каждому штату

Вычисление уровня детализации с исключением

Для выполнения данного требования мы можем использовать вычисления уровня детализации с исключением. Давайте сначала исключим измерение City (Город). Помните пример, в котором мы использовали вычисление уровня детализации с включением? Сначала нужно суммировать результаты вычислений, а затем дать возможность дашборду Tableau использовать агрегированное среднее в области отображения. Вот вычисления, которые мы назовем LOD Sales Exclude City (Уровень детализации продаж с исключением города):

{EXCLUDE [City]: SUM([Sales])}

С помощью этого вычисления мы, как это требуется, удалим City (Город) из области отображения, чтобы при помощи вычисления уровня детализации определить значение на основании уровня детализации State (Штат). Другими словами, данное вычисление сымитирует следующий тип области отображения:

The Tableau view we're mimicking

Мы можем использовать визуализацию, показанную выше, для проверки вычисления уровня детализации, чтобы убедиться, что полученное значение такое, как мы ожидали. Давайте добавим наше вычисление уровня детализации на исходную область отображения, где представлены измерения Country/Region (Страна/ область), State (Штат) и City (Город) при помощи типа агрегации average (среднее).

Adding our LOD calculation to the Tableau view

 Можно видеть, что вычисление уровня детализации возвращает правильную сумму на уровне State (Штат). Давайте перенесем вычисления на другой уровень. Мы используем Exclude LOD, чтобы исключить не только City (Город), но и State (Штат) и получить сумму измерения Country/Region (Страна/Область). В качестве руководства представляем вам эквивалентную область отображения с результатом данного вычисления:

Equivalent Tableau view for our LOD calculation

А вот  вычисление с исключением City (Город) и State (Штат) из начальной области отображения:

{EXCLUDE [City], [State]: SUM([Sales])}

После исключения City (Город) и State (Штат),  вычисление уровня детализации даст нам следующий результат:

Result of our Exclude LOD calculation in Tableau

В заключение давайте  добавим оба вычисления уровня детализации на область отображения – одно вычисление, из которого исключен только City (Город), и второе, из которого исключены и City (Город), и State (Штат). Мы также можем отредактировать ярлык заголовка Column (Колонка), нажав правой кнопкой мыши на его название:

Edit Column headerПереименуем их в Country Sales (Продажи по стране), State Sales (Продажи по штату), и City Sales (Продажи по городу) соответственно. Получим окончательную область отображения для обоих вычислений уровня детализации:

Final view of both LOD calculations in Tableau

Пропавшие измерения?

Что произойдет, если исключить из вычисления уровня детализации поле, отсутствующее на области отображения? Область отображения не изменится, так как вы даете команду Tableau удалить измерение, которое не существует. Именно поэтому получится тот же результат, как если бы вы изначально не использовали вычисление уровня детализации с исключением. Результат вычисления уровня детализации и с включением, и с исключением влияет на визуализацию. Поэтому важно, какие измерения вы включили в область отображения, поскольку это влияет на работу каждого из вычислений области детализации.

Чтобы проиллюстрировать вышесказанное, давайте возьмем область отображения выше и удалим измерения Country/Region (Страна/Область), State (Штат) и City (Город) из полок Rows (Ряды), и заменим их измерением Department (Отдел). Мы оставим значения Sales (Продажи) вместе двумя вычислениями области детализации с исключением City (Город), а также и City (Город) и State (Штат).

Replacing with Department dimension

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

https://public.tableau.com/views/DeepDive-LOD-ExcludeStatement/LODExcludeDashboard?:retry=yes&:embed=y&:loadOrderID=0&:display_count=y&:origin=viz_share_link

Глубокое погружение в Tableau: Уровень детализации – фиксированные вычисления (FIXED LOD)

Оба типа вычислений и с включением, и исключением относятся к визуализации, в которой они используются. Если вы добавляете (include) измерение, которое уже есть на области отображения, то вычисление с включением дополнительного влияния не оказывает. Точно так же, если вы исключаете (exclude) измерение, которого нет на области отображения, то вычисление не оказывает никакого влияния на визуализацию.

Фиксированные вычисления уровня детализации не относятся к визуализации. Вместо этого мы указываем вычислению сосредоточиться только на измерении(ях), которое (ые) мы указываем в вычислении, независимо от того, участвует ли оно/они в визуализации или нет. Чтобы проиллюстрировать этот пример, создадим такую же область отображения, что мы использовали ранее:

Basic Tableau view

В нашем воображаемом примере, мы хотим показать сумму Sales (Продаж) по State (Штату) и по Country (Стране). У нас это получилось в примере с использованием Exclude, когда мы исключили поля City (Город), а также City и State (Город и Штат). Сила фиксированного вычисления уровня детализации заключается в том, что нам не нужно учитывать, какие измерения есть, а каких нет на визуалиазции, чтобы получить тот же результат. Мы просто фиксируем уровень детализации желаемого измерения(ий).

Вот как выглядят вычисления суммы Sales (Продаж) по State (Штату), которых мы назвали LOD Sales Fixed State (Фиксированные вычисления уровня детализации продаж по штату):

{FIXED [State]:SUM([Sales])}

Эти вычисления сымитируют следующую область отображения:

Tableau calculation mimicks this view

Не важно, что было на исходной области отображения. Мы даем команду Tableau рассматривать только измерение State (Штат). Давайте добавим наше вычисление уровня детализации на область отображения:

Adding LOD calculation to our view

В нашем примере с исключением, мы достигли такого же результата, что и выше, исключив измерение City (Город). Фиксированные вычисления уровня детализации более гибкие, и могут применяться на многих листах. Это происходит из-за того, что они не зависят от измерений, используемых на данном рабочем листе, как это может происходить с формулами INCLUDE и EXCLUDE. Чтобы добавить новую колонку сумм Sales by Country (Продажи по стране), мы создали новое вычисление, привязанное к измерению Country (Страна):

{FIXED [Country / Region]:SUM([Sales])}

После добавления вычисления на область отображения, получим следующее:

Adding calculation fixed on Country Sales dimension

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

Before adding Department dimension to our Tableau view

Превратилась бы в эту:

After adding Department dimension to our Tableau view

При добавлении измерения Department (Отдел) все значения изменились. Повторим еще раз – выражения с включением и исключением относятся к области отображения. Что случится, если мы сделаем то же самое с фиксированными вычислениями? Произойдут ли изменения, если мы добавим новое измерение?

Adding another dimension to the Tableau view

Нет, значения в вычислениях уровня детализации не изменятся. Как вы можете видеть, они остались теми же, хотя колонка Sales (Продажи) изменилась. Это произошло из-за того, что фиксированные вычисления не связаны ни с каким элементом области отображения.

Ещё один вопрос

В этом и заключается хитрость вычисления уровня детализации. Что произойдет, если мы используем совершенно другое измерение, нежели то, что мы использовали в Fixed LOD? Давайте снова воспользуемся измерением Department (Отдел). Что произойдет с вычислениями уровня детализации, зафиксированными на State (Штат)?

Using a different dimension and the affect on LOD

Вычисления LOD Sales Fixed State (Уровня детализации, зафиксированный на продажах) не показывают продажи на уровне штата (State). Скорее, они показывают то же значение, которое мы обнаружили для продаж на уровне страны/региона (Country/Region). Почему? Неисправность?

Нет, наше вычисление уровня детализации работает точно так, как должно. Вот здесь уровень детализации становится запутанным. С нашей точки зрения, в качестве уровня детализации выступает только Department (Отдел). Вычисление уровня детализации работает правильно, но мы не дали уровень детализации для показа в области отображения. Помните, мы отфильтровали данные только по USA (США), поэтому получается агрегация всего в виде суммы по Country/Region (Страна/ Область). Это скрытно делается на уровне детализации State (Штат). Поскольку тип нашей агрегации – это SUM (СУММА), система просто складывает все штаты и в итоге получился такой же результат, что в итоге по Country/Region (Страна/Область).

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

Building another Tableau view

На этой области отображения показана сумма продаж по каждому штату, а также средний объем продаж по всем штатам, равный $176 060,67.

Помните, что в нашей области отображения перечислено лишь измерение Department (Отдел)? Изменим тип агрегации по каждому массиву данных на среднее, а не на сумму, и теперь сможем увидеть, как работают вычисления уровня детализации:

LOD calcualtion at work

Так мы поймем, что вычисление уровня детализации работает. Средние продажи по Department (Отдел) усреднены по каждой записи в каждом из трех отделов. Вот почему эти значение такие сравнительно небольшие – потому что они усреднены по каждому заказу этих отделов. Вычисление LOD Sales Fixed State (Уровня детализации, зафиксированного на продажах) смотрит на величину продаж на уровне штата, а не на уровне записи. Мы получили ту же величину, что и при нахождении среднего значения по сумме всех штатов на предыдущей таблице. Это значения уровня детализации те же по колонке, потому что в них не учтено измерение Department (Отдел), так как вычисления зафиксированы только на State (Штате).

Если я изменю фиксированные вычисления уровня детализации на вычисления с включением State (Штат), то он будет учитывать сумму Sales (Продаж) в каждом штате, но также будет сегментирован по Department (Отдел):

Changing to an Include calculation
https://public.tableau.com/views/DeepDive-LOD-FixedStatement/LODFixedDashboard?:retry=yes&:embed=y&:loadOrderID=0&:display_count=y&:origin=viz_share_link

LOD и табличные вычисления

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

Случай использования: % от общего значения

Мы хотим построить полигональную карту нашей организации в Соединенных Штатах. Бизнес компании разбит по регионам (Юг, Восток, Запад и т.д.), и каждый региональный менеджер хочет иметь возможность отфильтровать значения для своего региона. Вот предварительный набросок визуализации (на основе Superstore Sales Training.xlsx):

Tableau filled map viz first draft

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

Вариант с табличными вычислениями

Пример использования чрезвычайно прост. Я перетащу Sales (Продажи) на панель Detail (Детализация), и добавлю Quick Table Calculation (Быстрые табличные вычисления) для нахождения % от общего значения, а затем вывожу значение во всплывающую подсказку! Вот что получится:

Adding a Quick Table Calculation

Получилось, верно? Но нет, не совсем. Посмотрим, что получится, если я применю фильтр Sub Region (Подрегион) и снова проверю процент от общего:

Applying a Sub Region filter to the Tableau viz

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

Когда происходит вычисление

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

Calculated Fields and Table Calculations
  1. Tableau генерирует запрос и отправляет его базе данных
  2. База данных обрабатывает запрос. Очень важно понять, что именно здесь Tableau учитывает вычисляемые поля и вычисления уровня детализации.
  3. Tableau генерирует временную таблицу, уже отфильтрованную и агрегированную, состоящую из новых колонок, в которых содержатся результаты вычисляемых полей
  4. Только после этого применяются табличные вычисления.

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

Пересмотр % от общего значения

Нам нужно добавить вычисление уровня детализации на карту продаж, чтобы сравнить отфильтрованные результаты и неотфильтрованные. Для этого необходимо зафиксировать знаменатель продаж на уровне детализации Country/Region (Страна/Область). Поэтому имеет смысл использовать вычисления с фиксированным уровнем детализации.

Мы используем следующие вычисления, назовем их State % of Total vs. LOD Fixed Country (Процент по штату от общего значения против фиксированных вычислений уровня детализации по стране):

SUM([Sales])/SUM({ FIXED [Country / Region]:SUM([Sales])})

Получим результат относительно уровня по стране. Мы оставили табличные вычисления для сравнения:

Using our LOD calculation

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

LOD calculations and filtering

 Получилось!

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

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