20 способов использовать LOD-функции, 2 часть

6. Вывести связанные данные

LOD-функции могут быть использованы для поиска данных, связанных с неким параметром или измерением из вашего набора данных. Например,  у вас есть список с продажами вашим клиентам и вы хотите сравнить общий объем этих продаж с продажами конкретному клиенту. Скорее всего, вы создадите параметр для выбора клиента (назовем его Selected Customer). Затем мы можем использовать LOD-функцию для отображения продаж этому клиенту:

Selected Customer Sales (объем продаж конкретному клиенту)

// Sales for the customer selected in the parameter.

{FIXED : SUM(

IF [Customer Name]=[Selected Customer] THEN

     [Sales]

END

)}

Примечание: Это вариант реализации примера № 3.

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

Как и другие подходы, я использовал этот в своем блоге, пост про создание масштабируемых диаграмм- Creating Zoomable Charts in Tableau.

7. Преобразовать значение в строках в измеряемую величину

Tableau лучше всего работает, когда ваши данные являются длинной выборкой небольших чисел, поэтому если я могу распределить свои данные в таком формате, я делаю это. Однако, иногда с точки зрения вычислений может быть проще занести значения в одну строку. Для примера взглянем на данные нашего магазина, где показатели продаж и прибыли (Sales и Profit) распределены в две колонки,  название величины Measure  (“Sales” и “Profit”) и их значения Value.

В некоторых ситуациях это может стать наилучшей структурой для визуализации. Однако с некоторыми вычислениями могут возникнуть сложности из-за того, что значения находятся в разных строках. Например, как рассчитать коэффициент прибыли (чистая прибыль деленная на деньги,  полученные с продаж)? В этом случае больше подходит структура данных, благодаря которой мы могли бы выполнять вычисления на уровне строк. Так почему бы не использовать этот вариант! Мы можем использовать LOD-функции для вычисления на основе значений в строках Sales и Profit.

Sales (прибыль с продаж)

// Isolate sales.

{FIXED [Region]: SUM(

IF [Measure]= «Sales» THEN

     [Value]

END

)}

Profit (чистая прибыль)

// Isolate profit.

{FIXED [Region]: SUM(

IF [Measure]= «Profit» THEN

    [Value]

END

)}

Теперь, когда эти меры находятся в одной строке, осуществить вычисление будет гораздо проще, разделив прибыль Profit на деньги с продаж Sales.

Для того, чтобы увидеть другие примеры применения этой техники, посмотрите следующий пост — How to Divide Calculated Fields (разделение вычисляемого поля)

Примечание: Вы могли заметить, что в этой ситуации использование LOD-функции совершенно не обязательно. Эту проблему можно было решить иначе. И если у вас есть способ, при котором вы можете избежать LOD-функций — идите этим путем. Tableau отсылает дополнительные запросы к базе данных при использовании LOD, что приводит к снижению производительности. Тем не менее, есть определенные сценарии, подобные этому, когда LOD-функции необходимы. Пример, приведенный выше, является одним из таких сценариев. 

8. Получение данных за определенный период

Шон Миллер — мой любимый клиент в магазине- его данные содержат так много интересных историй, поэтому я всегда привожу его как пример, рассказывая о Tableau. Поэтому поговорим о нем и здесь. Что если бы мы хотели узнать о прибыли от последнего заказа Шона

Мы создаем LOD-функцию:

Customer Last Order Sales (объем продаж в рамках последнего заказа клиента)

// Get the sales for the customer’s last order.

IF [Order Date] = {FIXED [Customer Name]: MAX([Order Date])} THEN

[Sales]

END

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

Customer Last Order Sales (For Comparison) (продажи в рамках последнего заказа для дальнейшего сравнения)

// Get the sales for the customer’s last order and make available for comparisons to other sales orders.

{FIXED [Customer Name]: SUM(

IF [Order Date] = {FIXED [Customer Name]: MAX([Order Date])} THEN

    [Sales]

END

)}

Затем мы можем создать простое вычисляемое поле, чтобы провести сравнение, как показано ниже  

Чтобы посмотреть другие примеры, пройдите по ссылке — LOD to Perform Lookup by Maximum Date

9. Рассчитываем моду

Мода для набора чисел — это значение, которое встречается наиболее часто. Например, если ваш ряд — 1, 2, 2, 2, 4, 5, 5, 6, 7, то его мода — 2, поскольку это число появляется чаще остальных. Набор чисел может иметь несколько мод. Например, если в приведенном выше ряду была бы еще одна 5, то она тоже была бы модой. Однако моды используются не так часто, как среднее арифметическое или медианные значения, которые в области статистики всегда обсуждаются наравне. Но в Tableau нет функции для расчета моды. К счастью, мы можем использовать LOD-функцию для решения этой задачи.

Для этого примера, давайте попробуем определить наиболее распространенное количество купленных “ксероксов”. Я начну с того, что из всех своих товаров я отфильтрую ксероксы  “Copiers” . Я также сделаю так, чтобы фильтр срабатывал до начала  реализации LOD (для получения дополнительно информации загляните в раздел Порядок операций/Order of Operations в справочнике Tableau). Затем мы можем создать LOD-функцию, которая будет суммировать количество записей для каждого наименования, а затем получить максимум этих сумм.

Max Appearances (максимальное количество наименований)

// Get the max appearances of a given quantity.

{FIXED : MAX({FIXED [Quantity]: SUM([Number of Records])})}

Примечание: Интересно то, что в рамках использования этой LOD-функции, количество не является мерой, это измерение. И поскольку мы это фиксируем, Tableau будет использовать в качестве измерения, а не как меру.

У нас есть максимальное количество повторения, поэтому нам просто нужно сравнить количество повторений каждого числа с максимальным. Поскольку в числовом ряду может быть несколько мод, мы просто создаем вычисляемое поле, которое возвращает значение TRUE, если число является модой.

Is Mode? (это число является модой?)

// Is this number the mode?

// Note: Could be multiple modes.

IF {FIXED [Quantity]: SUM([Number of Records])} = [Max Appearances] THEN

TRUE

ELSE

FALSE

END

В этом случае самое распространенное количество ксероксов — 2, у нас 21 повторение этого значения.

Вот еще один пример: Calculate Mode (вычисляем моду)

10. Получение значения из сетов

“Set action” — это одна из самых невероятных инноваций, которые есть в  Tableau, обнаруженная мной во время работы. Однако работа с этим способом (как и с сетами в целом) достаточно сложна в понимании.  Раньше я использовал “set action” (особенно до того, как появилась возможность работать с параметрами), чтобы работать с графиками и сохранять определенные значения для того, чтобы позже их использовать. К примеру, в посте о создании масштабируемых диаграмм Creating Zoomable Charts in Tableau созданы определенные настройки для данных. Когда вы наводите курсор на определенные данные на вашей диаграмме, запускаются “set action”, и данные добавляются к выборке. Но, как правило, вам все равно нужно будет проверить, какие значения были включены. В приведенном выше примере нужно было получить данные, чтобы затем использовать их в вычисляемых полях. К сожалению, получить значение из набора не так просто. Эти сеты просто включают или изымают данные из выборки. Но мы можем использовать LOD-функции:  

Value from Set (значение из выборки)

// Get the value selected in the set.

{FIXED : MAX(IIF([Your Set],[Field Upon Which the Set is Built], NULL))}

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

20 Uses for Level-of-Detail Calculations

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

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