Что такое self в Python: примеры из реального мира
Что такое self в Python: примеры из реального мира
Я собираюсь показать вам, как создавать собственные средства разрешения конфликтов при использовании RANKX в LuckyTemplates .
Ничья в критической части результатов — распространенный сценарий. Есть несколько способов разрешения конфликтов, которые вы можете использовать, но важно выбрать тот, который лучше всего подходит для каждой ситуации. Вы можете посмотреть полное видео этого урока в нижней части этого блога.
Оглавление
Роль RANKX в LuckyTemplates
У меня есть привычка сравнивать функции DAX с рабочими местами в реальной жизни. Это помогает мне связать каждую функцию с тем, что она делает в LuckyTemplates.
RANKX оценивает и упорядочивает элементы в соответствии с определенным набором критериев. В реальном мире это можно сравнить с судьей на выставке собак, который просит участников выстроиться соответствующим образом.
В сценарии, который я буду использовать сегодня, я собираюсь использовать RANKX в качестве судьи для гипотетического конкурса продаж. Данные включают в себя цифры от отдела продаж, и приз достается человеку с самым высоким общим объемом продаж за месяц .
Чтобы было интересно, давайте представим, что 1-й приз — это Cadillac El Dorado, а 2-й приз — набор ножей для стейков. Это огромный разрыв в стоимости, что означает, что может быть только один победитель.
Глядя на свою таблицу, я вижу список всех продавцов в отделе продаж.
Я добавлю данные для общего объема продаж каждого человека .
Это показатель RANKX , который я применяю к этой таблице.
Это просто базовая конфигурация RANKX , в которой используется , поэтому я не включаю Итого при сортировке рангов.
продавцов ранжируются на основе объема продаж . Они расположены в порядке DESC . Здесь я использую Skip на случай ничьей.
Некоторые могут использовать Dense вместо Skip , но в данном случае это не помогает.
Пропустить против плотного
Чтобы продемонстрировать, как пропуск влияет на меру, я перетащу ранги в таблицу.
Затем я собираюсь отсортировать данные по Rank .
В таблице показана ничья за первое место. Но это был не лучший месяц для отдела продаж, поэтому менеджер не может позволить себе раздать 2 Cadillac El Dorados. Это означает, что мне нужно придумать тай-брейк, чтобы решить, кому достанется машина, а кому ножи для стейков.
Джаспер и Макс находятся наверху, делят номер 1. Поскольку я использовал Skip, вы увидите, что ранг подскакивает до 3 после двух единиц сверху . Это не работает для меня, потому что у меня все еще остается 2 победителя.
Что произойдет, если я использую Dense вместо Skip ?
Если я использую Dense , сам галстук не пострадает. Но вместо цифры 3 после ничьей показывается цифра 2 .
Очевидно, Dense и в этом случае не работает. Это означает, что мне нужно будет применить настраиваемый инструмент разрешения конфликтов.
Выбор пользовательского тай-брейка
Хороший пользовательский тай-брейк определяется двумя основными характеристиками.
Во-первых, необходимо осмысленно различать связанные элементы. Это должен быть фактор, разделяющий два или более связанных элемента.
Во-вторых, он не должен изменять ранг или порядок несвязанных элементов.
Размышляя об этих двух аспектах, легко придумать ряд решений для тай-брейков.
Общий объем продаж является нашим основным фактором ранжирования.
Поэтому я должен подумать о других факторах, которые можно использовать для устранения ничьей, вызванной сходными данными в двух верхних строках.
Количество продаж может быть один. Кто суетится больше всего? У кого больше всего клиентов?
Также можно посмотреть на максимальную продажу, проверив, кто получил самые большие счета.
Я мог бы также посмотреть на средние продажи.
В этом случае я решил пойти с Median Sales . На него не так сильно влияют выбросы, исходящие как от верхнего, так и от нижнего пределов. Это означает, что он может дать лучшее измерение центральной тенденции.
Создание пользовательского разрешения конфликтов
При создании тай-брейка требуется немало DAX, но концепция проста.
У меня есть Ranking2 в качестве переменной. Я также использовал HASONEVALUE по той же причине, по которой ранее использовал его в основном шаблоне RANKX . Единственная разница здесь в том, что на этот раз я использую Median Sales вместо Total Sales .
Затем я беру результат этой переменной и делю его на 100.
Поскольку у меня есть целые числа в моем общем объеме продаж, я могу играть с 1-м и 2-м десятичными знаками, чтобы исправить ничью. Разделив это на сто, мы получим числа за десятичной запятой, чтобы различать связанные числа сверху, не влияя на остальные результаты.
Это оставляет нас с верхними рангами, показывающими 0,01, 0,02 и так далее. Так что я собираюсь перевернуть это так, чтобы высший рейтинг получил наивысший балл на тай-брейке.
Итак, в HASONEVALUE я вычту RankScale из 1 .
Когда я применю это к таблице, вы увидите, что теперь у меня есть два десятичных знака под моим RANKX Tiebreaker .
Я также собираюсь перетащить в таблицу свои медианные продажи , чтобы более четко показать вам влияние нашего тай-брейка.
Глядя на эти цифры, видно, что ни Макс, ни Джаспер не получили наивысших оценок. На самом деле это был Мартин Перри.
Но помните, что это всего лишь решающий фактор , и общий объем продаж по-прежнему остается основным фактором ранжирования . Это означает, что я должен сравнивать числа только для связанных рядов .
Так что я просто добавлю свой Total Sales и RANKX Tie-break, чтобы получить цифры для столбца Total Sales Tiebreak .
Я запущу RANKX для нового общего объема продаж с применением разрешения конфликтов и отсортирую данные.
Теперь он показывает полный прогон от 1 до n без связанных элементов.
Использование функции RAND для разрыва связей
Могут быть случаи, когда случайно сгенерированное число может служить решающим фактором.
Одним из примеров может быть ситуация, когда вам нужна фокус-группа, включающая случайный выбор из 20 лучших продавцов. Если внутри группы есть ничьи, разумно просто использовать случайное число в качестве тай-брейка.
Но проблема с Power Query и DAX в целом заключается в том, что случайные функции ведут себя по-разному . Вы не получите ожидаемых результатов, особенно если используете в итерационной функции.
RAND возвращает случайное число от 0 до 1 . Поэтому, если вы решите, что сценарий, над которым вы работаете, нуждается в случайно сгенерированном числе, чтобы разорвать ничью, в идеале это будет сделано в этой части меры.
Вместо просто Total Sales должен отображаться Total Sales плюс RAND . Но опять же, в этом конкретном сценарии это не даст мне окончательного результата ранжирования, который мне нужен.
Рекомендации по RANKX — концепции формул LuckyTemplates и DAX
Более глубокое понимание расширенного RANKX
Создание таблиц динамического ранжирования с использованием RANKX в LuckyTemplates
Заключение
Как вы видели в этом примере, разрешить ничью при использовании RANKX в LuckyTemplates довольно просто. Хитрость заключается в том, чтобы выяснить, какой пользовательский тай-брейк дает наиболее логичные результаты.
В будущем я собираюсь сделать больше руководств по другим методам разрешения конфликтов, особенно по использованию RAND в сценарии выборки. Я считаю, что стоит посмотреть глубже.
А пока я надеюсь, что использование этого подхода сработает для вас, если вы работаете над подобным сценарием в данный момент или если вы столкнетесь с чем-то подобным в будущем.
Всего наилучшего
***** Изучаете LuckyTemplates? *****
Что такое self в Python: примеры из реального мира
Вы узнаете, как сохранять и загружать объекты из файла .rds в R. В этом блоге также рассказывается, как импортировать объекты из R в LuckyTemplates.
В этом руководстве по языку программирования DAX вы узнаете, как использовать функцию GENERATE и как динамически изменять название меры.
В этом учебном пособии рассказывается, как использовать технику многопоточных динамических визуализаций для создания аналитических сведений из динамических визуализаций данных в ваших отчетах.
В этой статье я пройдусь по контексту фильтра. Контекст фильтра — одна из основных тем, с которой должен ознакомиться любой пользователь LuckyTemplates.
Я хочу показать, как онлайн-служба LuckyTemplates Apps может помочь в управлении различными отчетами и аналитическими данными, созданными из различных источников.
Узнайте, как рассчитать изменения вашей прибыли, используя такие методы, как разветвление показателей и объединение формул DAX в LuckyTemplates.
В этом руководстве будут обсуждаться идеи материализации кэшей данных и то, как они влияют на производительность DAX при предоставлении результатов.
Если вы все еще используете Excel до сих пор, то сейчас самое подходящее время, чтобы начать использовать LuckyTemplates для своих бизнес-отчетов.
Что такое шлюз LuckyTemplates? Все, что тебе нужно знать