Итерация функций на языке DAX — подробный пример

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

Возможно, вы только что завершили некоторые простые СУММ или потенциально использовали функцию СРЗНАЧ, но также важно понимать, как использовать итерирующие функции, которые имеют X на конце , такие как: СУММ, СРЗНАЧ или СЧЁТЕС.

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

Оглавление

Что такое итерирующая функция?

Если вы все еще не знакомы с итерационной функцией, это функция на языке формул DAX, которая обычно имеет X на конце. У вас также есть табличные функции, которые перебирают таблицу, например FILTER или VALUES, но в этом случае мы будем иметь дело исключительно с SUMX.

Если вы посмотрите на нашу формулу для общего объема продаж, вы увидите, что это повторяющаяся функция из-за СУММ. Итерация означает перебор каждой отдельной строки и выполнение вычислений. В этом случае для каждой отдельной строки в таблице «Продажи» мы умножаем количество на текущую цену. Мы также возвращаемся к таблице Product, используя функцию RELATED, чтобы получить текущую цену.

Итерация функций на языке DAX — подробный пример

Я хочу показать вам, как вы можете писать действительно сложные итерационные функции, которые извлекают ценную информацию, которую вы, возможно, захотите получить в своих данных. В этом уроке я хочу рассчитать, сколько продаж мы делаем выше определенной цены. В этом случае мы собираемся выбрать 2000 долларов.

Я также хочу знать, каковы наши продажи в месяц для продуктов, которые стоят выше 2000 долларов США, но где кто-то покупает больше, чем один продукт. Мы также хотим увидеть, насколько хорошо он соотносится с нашим общим объемом продаж. Такого рода сложности можно достичь, написав всего одну формулу и используя итерирующую функцию.

Цена продажи более 2000 долларов США

Давайте создадим меру и назовем ее Цена продажи > 2000 долл. США и Количество > 1 . Как правило, вам придется написать несколько разных столбцов или несколько разных мер, чтобы увидеть здесь ответ, но я собираюсь показать вам, как вы можете сделать это, используя всего одну. Я собираюсь начать с SUMX, и здесь сказано, что нам нужно ввести таблицу, верно?

Итерация функций на языке DAX — подробный пример

Итак, мы собираемся решить эту проблему Quantity > 1 , создав таблицу, которая не является всей таблицей Sales, а таблицей, в которой уже отфильтровано все, что видели только один раз. Здесь мы будем использовать ФИЛЬТР, так как это табличная функция, так что вы можете поместить внутрь любую таблицу. Затем мы перейдем к Sales и пройдемся по каждой отдельной строке таблицы Sales с помощью этой функции FILTER и отфильтруем каждую строку с количеством, превышающим единицу.

Итерация функций на языке DAX — подробный пример

Для каждой продажи выше 1 я также хочу создать дополнительную логику. Я собираюсь написать шаблон выражения и использовать здесь SWITCH. Мы собираемся сказать, что если текущая цена продажи больше или равна 2000 долларов, то я хочу рассчитать общий объем продаж. Если это не так, то я вообще не хочу его вычислять. Наконец, я поставлю 0 в качестве альтернативного результата.

Итерация функций на языке DAX — подробный пример

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

В этом случае для каждой отдельной строки в этой таблице с фильтром вниз я оцениваю текущую цену, превышающую 2000 долларов. Если это так, мы подсчитываем продажи этой строки, а если нет, то это просто 0.

Как только я перетащу эту меру в таблицу, вы увидите, что результаты аналогичны тем, что мы получили на первой диаграмме; разница только в том, что это ежедневно.

Итерация функций на языке DAX — подробный пример

Цена продажи более 500 долларов США

Здесь мы можем создать дополнительную информацию, повторно используя тот же шаблон. Если мы хотим посмотреть, что было выше 500 долларов, все, что нам нужно сделать, это внести здесь небольшие изменения, нажать Enter, а затем также перетащить это в таблицу.

Итерация функций на языке DAX — подробный пример

Очевидно, мы видим большую разницу, потому что мы подсчитываем больше продуктов. Это потому, что мы не избавляемся от такого количества продуктов с более высокой или более низкой ценой, как раньше с 2000 долларов.

Итерация функций на языке DAX — подробный пример

Визуализация данных 

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

Итерация функций на языке DAX — подробный пример

Надеюсь, вы сможете оценить и понять, как далеко вы можете зайти с этими повторяющимися функциями в языке DAX. Вы можете начать по-настоящему погружаться в любой аспект ваших данных или извлекать очень конкретные идеи. Способ сделать это — использовать этот контекст строки, который позволяет вам фактически проникнуть внутрь этих повторяющихся функций. Вы можете просмотреть отдельную строку, поместить ее в расчет или исключить из нее, а также использовать итерирующие функции, такие как СУММ, СРЗНАЧ и СЧЁТЕС.

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

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

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

Заключение

Ключевой вывод из этого поста заключается в том, что повторяющиеся функции невероятно важны для понимания и изучения LuckyTemplates.

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

Ознакомьтесь с если вы только начинаете работать с языком DAX и LuckyTemplates. Многому можно научиться в рамках этого бесплатного курса. Вы можете найти это на .

Leave a Comment

Расчет недельных продаж с помощью DAX в LuckyTemplates

Расчет недельных продаж с помощью DAX в LuckyTemplates

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

Что такое self в Python: примеры из реального мира

Что такое self в Python: примеры из реального мира

Что такое self в Python: примеры из реального мира

Как сохранить и загрузить файл RDS в R

Как сохранить и загрузить файл RDS в R

Вы узнаете, как сохранять и загружать объекты из файла .rds в R. В этом блоге также рассказывается, как импортировать объекты из R в LuckyTemplates.

Новый взгляд на первые N рабочих дней — решение для языка кодирования DAX

Новый взгляд на первые N рабочих дней — решение для языка кодирования DAX

В этом руководстве по языку программирования DAX вы узнаете, как использовать функцию GENERATE и как динамически изменять название меры.

Продемонстрируйте идеи с помощью метода многопоточных динамических визуализаций в LuckyTemplates

Продемонстрируйте идеи с помощью метода многопоточных динамических визуализаций в LuckyTemplates

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

Введение в фильтрацию контекста в LuckyTemplates

Введение в фильтрацию контекста в LuckyTemplates

В этой статье я пройдусь по контексту фильтра. Контекст фильтра — одна из основных тем, с которой должен ознакомиться любой пользователь LuckyTemplates.

Лучшие советы по использованию приложений в онлайн-службе LuckyTemplates

Лучшие советы по использованию приложений в онлайн-службе LuckyTemplates

Я хочу показать, как онлайн-служба LuckyTemplates Apps может помочь в управлении различными отчетами и аналитическими данными, созданными из различных источников.

Анализ изменений маржи прибыли с течением времени — аналитика с LuckyTemplates и DAX

Анализ изменений маржи прибыли с течением времени — аналитика с LuckyTemplates и DAX

Узнайте, как рассчитать изменения вашей прибыли, используя такие методы, как разветвление показателей и объединение формул DAX в LuckyTemplates.

Идеи материализации кэшей данных в DAX Studio

Идеи материализации кэшей данных в DAX Studio

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

Бизнес-отчетность с использованием LuckyTemplates

Бизнес-отчетность с использованием LuckyTemplates

Если вы все еще используете Excel до сих пор, то сейчас самое подходящее время, чтобы начать использовать LuckyTemplates для своих бизнес-отчетов.