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, мы можем выделить это одно конкретное значение из набора и использовать его в других вычислениях.