Расчет недельных продаж с помощью DAX в LuckyTemplates
В этом руководстве показано, как в конечном итоге можно рассчитать разницу между еженедельными результатами продаж с помощью DAX в LuckyTemplates.
Я обнаружил, что большинство людей путаются в понимании того, как DAX работает в контексте строк . Это связано с тем, что контекст строки может быть довольно сложным и излишне сложным. Итак, в этой статье мы собираемся коснуться контекста строк . Вы можете посмотреть полное видео этого урока в нижней части этого блога.
Я думаю о контексте строки через итерации или повторяющиеся функции . Как только я сделал это различие в уме, оно стало более понятным с точки зрения того, что на самом деле происходило в вычислительной машине.
Напомним, что мы обсудили, что существует три типа контекстов: контекст оценки , контекст фильтра и контекст строки .
Любой расчет DAX выполняется в два этапа. Контекст оценки всегда идет первым, а затем он разветвляется либо на контекст фильтра, либо на контекст строки, в зависимости от того, какую функцию вы пишете.
Оглавление
Понимание контекста строки
Контекст строки связан с итерацией.
Я собираюсь показать вам пару примеров, и, надеюсь, это поможет вам понять, что на самом деле делает контекст строки в бэкэнде.
Контекст строки VS Контекст фильтра
В нашем примере формула вычисляется через контекст фильтра , потому что это простая агрегация. Он суммирует весь столбец «Количество» после того, как все первоначальные фильтры были установлены.
Начальным фильтром в таблице «Продажи» является «Продукт 1». Суммируя каждое проданное количество, мы получаем 165.
Теперь я собираюсь показать вам, как получить точно такой же результат, но вычислить его совершенно другим способом. Во-первых, я собираюсь создать новую меру для итерации количества проданных товаров, используя формулу итерации.
Примеры итерационных функций включают СУММЛИС , СРЗНАЧ , МНОЖЕХ и СЧЁТЕС . В этом случае мы будем использовать SUMX .
Функция SUMX попросила меня ввести таблицу, поэтому я собираюсь добавить таблицу Sales. А затем он попросил меня ввести выражение, поэтому я просто вставил его в столбец «Количество».
Эта функция сильно отличается от первой функции, но я получаю точно такой же результат, когда перетаскиваю ее.
Здесь мы получаем точно такие же результаты, потому что в конечном счете это тот же самый расчет. Просто рассчитывали по-другому.
Итерация проданного количества рассчитывалась с использованием контекста строки , а общее проданное количество рассчитывалась с использованием контекста фильтра .
Вычисление количества проданных итераций с использованием контекста строки
Давайте теперь шаг за шагом рассмотрим, как рассчитывается количество проданных итераций. Во-первых, вы должны не забыть оставить первоначальный контекст оценки, которым в данном случае является Продукт 1. А затем через контекст строки мы перебираем каждую строку в таблице, которую мы указываем.
В этом случае мы указываем таблицу «Продажи», а затем просматриваем каждую строку в столбце «Количество».
Во время начальной оценки Продукт 1 будет определяться тем, что отфильтровано в столбце идентификатора продукта. А затем он подсчитывает строки в столбце «Количество». Каждый раз, когда он попадает в строку, он входит и сохраняет результат в памяти.
После того, как он достигает нижней части таблицы, он выполняет оценку всех результатов, сохраненных в памяти, а затем выполняет любые вычисления, которые вы от него требуете, в данном случае это SUMX .
Зачем использовать контекст строки или итерирующую функцию?
Это потому, что внутри повторяющейся функции вы можете делать гораздо более сложные вещи. Вы можете написать очень продвинутую логику внутри.
Например, для каждой строки в таблице «Продажи» количество умножается на 2. Теперь вы увидите, что происходит тот же процесс расчета, но мы получаем разные результаты.
Это потому, что для каждой отдельной строки мы пишем другую логику. После просмотра каждой строки в столбце количества мы умножаем значение на два, а затем оно сохраняется в памяти. В конце мы делаем SUM .
Мы также можем писать здесь разные вещи, включая расширенную логику, такую как логика IF или SWITCH .
Есть куча и куча примеров, когда было бы лучше использовать итерирующую функцию или контекст строки для выполнения вычислений, а не функцию агрегации или контекст фильтра .
Ключевые примечания к пониманию контекстов в LuckyTemplates
Чтобы повторить все ключевые моменты, связанные с контекстом, помните, что вычисления в DAX выполняются в два этапа. Первым шагом всегда является контекст оценки . Очень важно, каков контекст оценки .
Как только вы поймете, каков контекст оценки для любого отдельного результата, DAX разветвляется на два разных пути. Он может рассчитываться либо через контекст фильтра, либо через контекст строки.
Выбор контекста для использования зависит от того, какую формулу вы пишете. Поэтому, если вы напишете простую формулу агрегирования , она затем пойдет и рассчитает ее через контекст фильтра . Но если вы напишете итерирующую функцию наподобие SUMX, то она будет вычислять формулу через контекст строки .
Как только вы станете немного более продвинутым в DAX, вы сможете иметь несколько контекстов в одной и той же функции. Но прежде чем вы туда доберетесь, вам действительно нужно понять, что такое контекст в его простейшей форме.
Заключение
Понимание типов контекста абсолютно необходимо, когда вы изучаете DAX и хотите выполнять более сложные задачи. Когда вы начинаете писать действительно сложную формулу DAX, у вас одновременно работает несколько контекстов, и вам нужно понимать, что делает каждая отдельная часть этой формулы для достижения желаемых результатов.
Вот несколько рекомендуемых ссылок, чтобы узнать больше о применении контекста строки в LuckyTemplates:
Контекст оценки — (1.8) Полное руководство для начинающих по DAX
Контекст фильтра — (1.9) Полное руководство для начинающих по DAX
Наслаждайтесь работой над этим.
В этом руководстве показано, как в конечном итоге можно рассчитать разницу между еженедельными результатами продаж с помощью DAX в LuckyTemplates.
Что такое self в Python: примеры из реального мира
Вы узнаете, как сохранять и загружать объекты из файла .rds в R. В этом блоге также рассказывается, как импортировать объекты из R в LuckyTemplates.
В этом руководстве по языку программирования DAX вы узнаете, как использовать функцию GENERATE и как динамически изменять название меры.
В этом учебном пособии рассказывается, как использовать технику многопоточных динамических визуализаций для создания аналитических сведений из динамических визуализаций данных в ваших отчетах.
В этой статье я пройдусь по контексту фильтра. Контекст фильтра — одна из основных тем, с которой должен ознакомиться любой пользователь LuckyTemplates.
Я хочу показать, как онлайн-служба LuckyTemplates Apps может помочь в управлении различными отчетами и аналитическими данными, созданными из различных источников.
Узнайте, как рассчитать изменения вашей прибыли, используя такие методы, как разветвление показателей и объединение формул DAX в LuckyTemplates.
В этом руководстве будут обсуждаться идеи материализации кэшей данных и то, как они влияют на производительность DAX при предоставлении результатов.
Если вы все еще используете Excel до сих пор, то сейчас самое подходящее время, чтобы начать использовать LuckyTemplates для своих бизнес-отчетов.