Расчет недельных продаж с помощью DAX в LuckyTemplates
В этом руководстве показано, как в конечном итоге можно рассчитать разницу между еженедельными результатами продаж с помощью DAX в LuckyTemplates.
Я хочу глубоко погрузиться в то, что называется комбинаторным анализом. Это можно определить как выбор и расположение элементов множеств в соответствии с заданными правилами. Это может показаться эзотерическим, но на самом деле у него есть несколько очень практических вариантов использования. Вы можете посмотреть полное видео этого урока в нижней части этого блога.
В этом руководстве я покажу вам, как это сделать с помощью Power Query в LuckyTemplates.
Оглавление
Пример комбинаторного анализа
В этом примере комбинаторного анализа задача заключалась в том, что у нас был список из шести складов, и нам нужно было сгенерировать каждый уникальный набор из трех. Звучит как довольно простая проблема, но это один из тех случаев, когда язык действительно имеет значение.
Правильный ответ здесь: 216, 120, 56 или 20. Таким образом, в зависимости от того, как вы определяете этот уникальный набор и предписанные вами правила, вы можете ошибиться в 10 раз, если не получите набор правильно.
Итак, здесь важны два измерения. Первый — « порядок имеет значение ?» Итак, когда мы говорим о трех сетах по три, эквивалентен ли ABC BCA? Так важен ли порядок? И если порядок имеет значение , мы говорим о перестановках .
Хорошим примером перестановок, где порядок может иметь значение, является (мы говорим о контексте склада) время в пути. Очень может быть, что если вы посещаете склад A, затем склад B, а затем склад C, время в пути из-за потока трафика с движением против трафика, время, которое вы прибыли на каждый склад, может сильно различаться в зависимости от заказа. в котором вы посещаете их.
Оборотной стороной этого является « порядок не имеет значения », и в этом случае мы говорим о комбинациях , а не о перестановках. Обычным вариантом использования здесь является расстояние. Например, по прямой линии расстояние от A до B и C не будет отличаться от расстояния от B до C и A. Это будет рассматриваться в контексте комбинации.
Комбинации считаются дубликатами друг друга. Принимая во внимание, что в контексте перестановки они будут считаться уникальными.
Итак, как вы можете видеть, кодовый замок действительно должен быть замком перестановки, потому что в этом случае порядок имеет значение, что делает его перестановкой, а не комбинацией.
Второй вопрос или параметр, который имеет значение, звучит так: « Как только элемент выбран, можно ли его выбрать снова ?» Например, если мы выбираем A в качестве нашего первого склада, можем ли мы снова выбрать A или нам нужно каждый раз выбирать уникальные элементы?
Здесь мы используем термин « с заменой » или « без замены ». Таким образом, если элемент можно выбрать снова, это с заменой, то есть вы выбираете его. И в некотором смысле он возвращается в корзину для выбора и снова выбирается. Если ответ отрицательный, то без замены.
Итак, вы можете видеть в этом решении, что перестановки с заменой являются наименее ограничивающими. Так что это тот, который дает нам 216 уникальных наборов. А комбинации без замены — самые ограничительные, дающие нам 20.
Мы просто собираемся использовать эти формулы для проверки результатов Power Query . Итак, мы запомним 216, 120, 56 и 20. Теперь давайте перейдем к Power Query и посмотрим, как работает этот комбинаторный анализ.
Комбинаторный анализ: перестановки в Power Query
В Power Query у меня есть очень простой случай с шестью именованными складами.
И я разработал эту функцию Power Query M, которую я использовал для обработки комбинаций и перестановок.
Во-первых, я собираюсь разработать этот первый вариант использования, то есть перестановки с заменой , наименее ограничительный из множества. Способ сделать это в Power Query — взять эту таблицу Warehouses и сослаться на нее (в DAX мы используем CROSSJOIN ).
Я назову это Per w Rep (перестановки с заменой).
Существует несколько способов перекрестного соединения в Power Query. Самый простой способ, который я нашел, - это просто добавить столбец , а затем пользовательский столбец . В формуле пользовательского столбца укажите ссылку на таблицу «Склады» .
И что мы обнаружим, когда нажмем OK, так это то, что он создает вложенную таблицу.
Затем мы расширяем его и снимаем флажок « Использовать исходное имя столбца в качестве префикса» .
И мы получаем это Location.1 , которое является любой возможной комбинацией двух. Таким образом, первые шесть ссылок противопоставляются остальным шести комбинациям. Вторая шестерка делает то же самое до тех пор, пока у нас не будет 36 различных наборов.
Мы можем сделать третий, сделав это снова. Итак, мы идем Добавить столбец, затем настраиваемый столбец, а затем Склады.
И у нас будут 216 строк как перестановки с заменой.
И вы можете видеть отсюда, 3 столбца, 216 строк.
Следующий вариант использования — перестановки без замены . То, о чем мы здесь думаем, это в основном все, что имеет повторяющийся элемент. Итак, в этой таблице мы рассмотрим строки с 1 по 8.
Для этого мы рассмотрим функцию fxSortAndIsDistinct .
В расширенном редакторе вы можете видеть, что он в основном запрашивает таблицу, а затем выполняет SortLocs . Но важная часть здесь для «с заменой» или «без замены» заключается в том, что это функция IsDistinct . Это просто берет список элементов и определяет истинное или ложное, независимо от того, отличается ли он или имеет ли он какие-либо дубликаты в списке элементов.
Итак, мы идем сюда, выбираем Perm w Rep и нажимаем Invoke .
Это даст нам эти два новых столбца, SortLocs и IsDistinct . Теперь помните, что первые восемь записей имели дубликаты, а девятая запись была первой, когда мы увидели отдельный файл . Вот почему девятая строка здесь первая оказывается истинной.
Если мы вернемся к числам, которые мы получили при расчетах факториала, мы ожидаем 120 записей, если мы уберем неразличимые записи. Итак, давайте попробуем отфильтровать здесь и убрать ЛОЖЬ.
Когда мы это делаем, мы получаем именно те 120 строк, которые мы ожидаем. Теперь давайте переименуем это как Perm wo Rep (перестановка без замены).
Комбинаторный анализ: комбинации в Power Query
Теперь будем делать комбинации с заменой . Для этого мы просто делаем процесс еще раз и повторяем шаг (вызванная функция). Так что это нормально, что у нас есть дубликаты, но нам не нужны наборы с одинаковыми элементами , но в другом порядке.
В данном случае, когда мы говорим о комбинациях. Если вы помните, что ABC равно BCA равно CAB, все они считаются дубликатами друг друга. И мы определяем это с помощью функции Sort ( fxSortAndIsDistinct ).
Если мы вернемся к функции в расширенном редакторе, то увидим, что во втором столбце мы взяли этот список и отсортировали его в алфавитном порядке. Затем мы извлекли из этого списка значения, разделенные запятой. Теперь у нас есть каждый набор, отсортированный по алфавиту. Мы нормализовали порядок, чтобы упростить поиск дубликатов.
Теперь, если мы вернемся к этой вызываемой функции, помните, что здесь мы ищем 56 записей. Итак, мы берем такое расположение ( SortLocs ) и удаляем дубликаты .
Таким образом, мы получаем 56 строк.
Итак, это наш третий вариант использования. Давайте переименуем это как CC w Rep (сочетания с заменой).
Давайте завершим это, снова взяв эту таблицу перестановок с заменой (Perm w Rep) и выполнив тот же шаблон (вызов). Затем мы собираемся удалить дубликаты (столбец SortLocs), потому что это комбинация, и порядок не имеет значения. Это без замены, поэтому нам также нужен только отдельный список . Итак, мы отключаем FALSE в столбце IsDistinct.
При этом мы получаем 20 записей. И теперь у нас есть все четыре наших варианта использования.
Сортировка столбцов таблицы дат в LuckyTemplates.
Руководство для начинающих по коду M в LuckyTemplates
Преобразование функции таблицы дат в запрос таблицы в LuckyTemplates
Заключение
Итак, теперь у нас есть все четыре варианта использования. Вы действительно можете увидеть, насколько это мощно с точки зрения разработки комбинаторного анализа, который дает вам контроль над заменой и отдельными элементами.
Это даже применимо в некоторых более сложных случаях, когда у вас есть частичная замена или, может быть, выбран дублирующийся элемент для первого, но не для второго раза. Вы все еще можете справиться с этим в Power Query .
Я надеюсь, что вы нашли это полезным. Проверьте ссылки ниже для получения дополнительной информации. Вы также можете посмотреть полное видео этого урока ниже.
Всего наилучшего!
В этом руководстве показано, как в конечном итоге можно рассчитать разницу между еженедельными результатами продаж с помощью DAX в LuckyTemplates.
Что такое self в Python: примеры из реального мира
Вы узнаете, как сохранять и загружать объекты из файла .rds в R. В этом блоге также рассказывается, как импортировать объекты из R в LuckyTemplates.
В этом руководстве по языку программирования DAX вы узнаете, как использовать функцию GENERATE и как динамически изменять название меры.
В этом учебном пособии рассказывается, как использовать технику многопоточных динамических визуализаций для создания аналитических сведений из динамических визуализаций данных в ваших отчетах.
В этой статье я пройдусь по контексту фильтра. Контекст фильтра — одна из основных тем, с которой должен ознакомиться любой пользователь LuckyTemplates.
Я хочу показать, как онлайн-служба LuckyTemplates Apps может помочь в управлении различными отчетами и аналитическими данными, созданными из различных источников.
Узнайте, как рассчитать изменения вашей прибыли, используя такие методы, как разветвление показателей и объединение формул DAX в LuckyTemplates.
В этом руководстве будут обсуждаться идеи материализации кэшей данных и то, как они влияют на производительность DAX при предоставлении результатов.
Если вы все еще используете Excel до сих пор, то сейчас самое подходящее время, чтобы начать использовать LuckyTemplates для своих бизнес-отчетов.