Что такое self в Python: примеры из реального мира
Что такое self в Python: примеры из реального мира
Давайте еще раз взглянем на проблему, обсуждаемую в этом туториале , где динамически сравнивались первые N рабочих дней каждого месяца. Эта проблема была основана на запросе участника LuckyTemplates на нашем форуме, где он хотел динамически просмотреть и сравнить первые 5, 10, 15 и 20 оплачиваемых дней (не выходные и не праздничные дни) для данного месяца с предыдущий месяц.
Вместо использования power query мы придумаем решение на языке кодирования DAX. Вы можете посмотреть полное видео этого урока в нижней части этого блога.
В первом видео я придумал решение power query, как решить эту проблему. Но затем один из наших экспертов LuckyTemplates, Антрикш Шарма, придумал блестяще эффективную меру, в которую также стоит углубиться. Мы обсудим некоторые методы, которые он использовал при разработке показателей, которые предоставят вам дополнительные инструменты в наборе инструментов DAX.
Это, безусловно, помогло мне и некоторым другим экспертам, которые взглянули на это. Сравнительное сравнение сопоставимых рабочих дней по месяцам является ценным шаблоном, который можно использовать во многих ситуациях.
Давайте углубимся в запрос мощности и посмотрим, что здесь сделал Антрикш. У нас есть месяц и год , общий объем продаж и, наконец, общий объем продаж за N рабочих дней , которые мы выбрали с помощью мощного запроса на основе разработанного нами параметра «что, если».
Антрикш применил совершенно другой подход, применив шокирующе короткую меру для решения всей этой проблемы. Первое, что я заметил, это использование команды .
Это функция DAX, которую я использую не очень часто, но она идеально подходит для такого типа задач. Если мы посмотрим на руководство по SQL BI DAX, в нем говорится, что функция GENERATE — это табличная функция, которая использует в качестве входных данных две разные таблицы, а затем выполняет эквивалент SQL-команды CROSS APPLY.
Таким образом, он берет базовую таблицу (Table1) и повторяет ее, а затем берет второе табличное выражение и оценивает его для каждой строки в первой таблице, а затем возвращает таблицу в качестве вывода.
Возьмем меру Антрикша и закинем ее в таблицу. Мы видим, что он дает те же результаты, что и решение для запроса мощности, которое мы делали в прошлый раз. Так что это хорошо и достаточно хорошо подтверждает обе меры.
Давайте разберем эту меру. Здесь применяется первый фильтр: Dates[IsBusinessDay] = TRUE. При этом удаляются все даты, не являющиеся выходными и непраздничными, на основе поля расширенной таблицы дат IsBusinessDay.
Мы говорили об этом намного больше в первом уроке , где мы также рассмотрели, как связать это с нашим праздничным столом.
Интересная часть этого действительно связана с двумя входными данными таблицы. Первая таблица представляет собой таблицу с одним столбцом поля «Месяц и год» в таблице «Дата».
Но во второй таблице происходят интересные вещи. Антрикш использовал , а затем использовал наш динамический параметр как количество строк в TOPN.
Мера Total Sales прикрепляется ко второй таблице, а затем применяется к первой таблице.
Оглавление
Понимание сложной меры с использованием языка кодирования DAX
Один из самых простых способов понять, что делает подобная сложная мера, — зайти в табличный редактор . Мы можем взглянуть на это выражение и сначала выяснить, что делает это выражение TOPN.
Давайте скопируем часть TOPN и создадим новый запрос DAX . Помните, что запросы DAX начинаются с EVALUATE.
Когда мы вставим часть TOPN, мы увидим, что она извлекает первые 5 дат из таблицы заказов на продажу. В TOPN есть таблица, состоящая из значений всех дат заказов в таблице продаж.
Эта функция TOPN принимает значение параметра «что, если» (которое в данном случае равно 5) и применяет его к полю даты заказа на продажу. Затем он вытягивает первые 5 дат в контексте фильтра в порядке возрастания на основе этого поля.
Учитывая, что нет дополнительного контекста фильтра, он просто извлекает эти первые 5 дат из всей таблицы.
Столбец @Sales просто добавляет общий объем продаж в соответствующем контексте фильтра в таблицу TOPN.
На данный момент у нас есть первая таблица месяца и года, вторая таблица TOPN первых N дат из таблицы продаж, а затем общий объем продаж, связанный с этим.
Использование таблицы GENERATE в языке кодирования DAX
Давайте посмотрим, что делает эта таблица GENERATE. Мы вернемся в табличный редактор и создадим новый запрос DAX.
Мы начнем, как всегда, с EVALUATE, вставим часть кода GENERATE и нажмем 5.
Мы видим, что для каждой строки первой таблицы выполняется итерация и соединение с 5 строками из таблицы TOPN, оцененными в контексте с функцией @Sales.
Это заняло первые 5 рабочих дней в апреле, первые 5 рабочих дней в мае, первые 5 рабочих дней в июне и так далее, пока не дойдет до конца первой таблицы.
Это именно то, что нам нужно, и теперь сложение этих значений становится относительно простым делом. У нас есть результат (который является табличной переменной результатов GENERATE), а затем нам нужно суммировать функцию @Sales.
В контексте мы теперь суммируем первые 5 рабочих дней в апреле, первые 5 рабочих дней в мае и так далее, пока не дойдем до нашей общей суммы в 23 737 430 долларов США, и в этом случае у него нет контекста месяца и года для работы. .
Это суммирует весь столбец @Sales и дает нам ту же сумму, что и в нашем решении для запроса мощности.
Вы можете видеть, что если мы изменим слайсер на 10, мы динамически получим те же результаты с языком кодирования DAX, что и в запросе мощности.
У нас также есть гистограмма внизу, которая динамически корректируется, чтобы отражать внесенные нами изменения.
Динамическая настройка названия меры
Есть еще один дополнительный трюк, который я хотел вам показать. Вы можете создать динамическую корректировку параметра «что, если» и динамически привязать его к заголовку меры.
Например, если мы изменим срез вверху на 15, он динамически изменит имя меры внизу на Общий объем продаж за первые 15 рабочих дней каждого месяца .
Это можно легко сделать в DAX с помощью условного форматирования . Мы в основном просто берем три струны. Первый — это Total Sales for First , а затем соедините его со значением, полученным из параметра «что, если», а затем просто привяжите его к остальной части заголовка.
Затем заходим в визуал, переходим к условному форматированию заголовка и нажимаем fx .
Мы отформатируем по значению поля и выберем эту динамическую меру заголовка. Это изменит выбор параметра «что, если».
Заключение
Теперь у нас есть готовое решение с использованием языка кодирования DAX. Мы обсудили действительно творческий и эффективный способ сделать это с помощью функции GENERATE. Я хочу поблагодарить Антрикша за то, что он поделился с нами своими блестящими знаниями DAX. Я многому научился, изучая его решение DAX, и надеюсь, вы тоже.
Что такое self в Python: примеры из реального мира
Вы узнаете, как сохранять и загружать объекты из файла .rds в R. В этом блоге также рассказывается, как импортировать объекты из R в LuckyTemplates.
В этом руководстве по языку программирования DAX вы узнаете, как использовать функцию GENERATE и как динамически изменять название меры.
В этом учебном пособии рассказывается, как использовать технику многопоточных динамических визуализаций для создания аналитических сведений из динамических визуализаций данных в ваших отчетах.
В этой статье я пройдусь по контексту фильтра. Контекст фильтра — одна из основных тем, с которой должен ознакомиться любой пользователь LuckyTemplates.
Я хочу показать, как онлайн-служба LuckyTemplates Apps может помочь в управлении различными отчетами и аналитическими данными, созданными из различных источников.
Узнайте, как рассчитать изменения вашей прибыли, используя такие методы, как разветвление показателей и объединение формул DAX в LuckyTemplates.
В этом руководстве будут обсуждаться идеи материализации кэшей данных и то, как они влияют на производительность DAX при предоставлении результатов.
Если вы все еще используете Excel до сих пор, то сейчас самое подходящее время, чтобы начать использовать LuckyTemplates для своих бизнес-отчетов.
Что такое шлюз LuckyTemplates? Все, что тебе нужно знать