Расчет недельных продаж с помощью DAX в LuckyTemplates
В этом руководстве показано, как в конечном итоге можно рассчитать разницу между еженедельными результатами продаж с помощью DAX в LuckyTemplates.
Я собираюсь показать вам, как работать с таблицей курсов валют, где не учитываются некоторые дни . Эти дни могут быть выходными или праздничными.
Иногда это может не быть проблемой, особенно если компания, для которой вы готовите отчет, не работает в выходные и праздничные дни. Но если они это сделают, вы можете получить неверные итоги в конце месяца.
Знание того, как работать с отсутствующими данными, позволит вам честно сравнивать продажи, если используется несколько валют. Например, могут быть дни, когда вы думаете, что общий объем продаж снижается из-за падения стоимости валюты. На самом деле общий объем продаж может быть низким, потому что вы не учитываете все дни в заданном периоде.
В этом примере я возьму последний доступный курс валюты и использую его для отсутствующих дат, чтобы заполнить пространство. Вы можете посмотреть полное видео этого урока в нижней части этого блога.
Оглавление
Данные в таблице курсов валют
Ниже приведена таблица фактов, которая представляет собой таблицу курсов валют . Он использует евро в качестве базовой валюты.
Он показывает данные за январь 2016 года с соответствующим кросс-рейтом за каждый день.
С 1 января все хорошо. Но когда я попадаю на 26-е число, следующая дата в следующем ряду — 29-е.
Это означает, что мне не хватает данных от 27-го и 28-го числа .
Обратите внимание, что некоторые могут предпочесть использовать Power Query для решения этой ситуации. Сейчас я просто хочу сосредоточиться на DAX.
Теперь предположим, что я хочу использовать 0,920 27 и 28 числа. Это кроссрейт, используемый 26-го числа. Как мне это сделать с помощью DAX?
Некоторые могут сказать, что это можно легко сделать в Excel. Они могут быть правы в какой-то степени.
Но преимущество, которое LuckyTemplates имеет по сравнению с Excel, заключается в возможности дальнейшего погружения в данные с разных точек зрения без необходимости что-либо переделывать или изменять, что, скорее всего, произойдет в Excel.
Я собираюсь показать вам все меры, которые вам необходимо рассмотреть, а также различные шаги, которые я бы предпринял, чтобы покрыть любые недостающие данные из таблиц курсов валют.
Измерение курса валюты
Во-первых, позвольте мне показать вам мою основную таблицу. У меня уже есть некоторые данные, включая дату и курс валюты для евро .
В этом случае курс валюты просто использует функцию .
Поскольку я имею дело с одним курсом валюты в день, легко использовать такие функции, как SUM , , или что-то подобное. Данные, отображаемые в каждой строке, имели бы смысл.
Единственная проблема здесь заключается в том, что произойдет с Total .
Это показывает, что Total равен 26,693, что не имеет никакого смысла. Это буквально просто суммирование курсов валют за все дни. Из-за этого мне пришлось бы найти способ перебирать дни, чтобы получить настоящий Total .
Итак, я посмотрю на свою меру «Дата валюты» , чтобы попытаться решить эту проблему.
Мера текущей даты
Лично я всегда делаю показатель «Текущая дата» , который вводит любую дату, на которой я нахожусь, в контексте текущего фильтра .
Я также предпочитаю использовать . В этом примере использование функции MAX даст мне 1/31 в сумме, что имеет больше смысла, поскольку это последняя указанная дата.
Дата последней валюты
Моя таблица также содержит дату последней валюты . Я получаю это, используя функцию и ссылаясь на таблицы FactCurrencyRates и Date .
Хотя здесь показана функция LASTDATE , также можно использовать MAX . Здесь используется та же предпосылка, что и в таблице «Текущая дата» , но указывается конкретный момент времени по отношению к таблице «Курсы валют» .
Прокрутив вниз, я вижу, что данных за 27 и 28 число месяца нет.
Чтобы восполнить эти пропущенные дни, я расскажу о столбце «Дата последней отчетной валюты» .
Дата последней отчетной валюты
Последняя отчетная дата валюты будет определять, какой курс использовать для пропущенных дней. Идея заключается в том, что последний заявленный курс валюты будет тем же курсом, который будет использоваться в те дни, когда отсутствуют данные .
Поскольку нет данных и за 27, и за 28 число, значит, будут применены данные за 26 число.
Наш пример также показывает, что последняя отчетная дата валюты не обязательно может быть предыдущим днем. Так как данных за 27-е также нет, мне все равно придется вернуться к 26-му, чтобы выяснить, какой курс использовать 28-го.
Прежде чем я перейду к мере, показывающему, как это было сделано, помните, что все здесь происходит в контексте того, как работает фильтр. Я должен подумать о том, на каких конкретных данных я хочу сосредоточиться.
Поскольку я нахожусь в строке на 27-е число месяца, я хочу удалить все ссылки на фильтры и вместо этого сосредоточиться на 26-м. Это означает использование или , поскольку они позволяют мне изменять применяемый фильтр. Не путайте это с функцией , которая может только еще больше ограничить данные.
Итак, вот мера, которую я использовал для даты последней отчетной валюты . Я использовал CALCULATE для этого примера.
Я всегда стараюсь найти как можно больше переменных. Мне просто нужно посмотреть на область действия каждой переменной, поскольку переменные принимают значение, в котором они определены .
В этом случае я буду использовать текущую дату , так как знаю, что эта переменная не изменится независимо от того, какие функции я использую.
Обратите внимание, что не требуется находить эту переменную. Это просто привычка, которая позволяет мне проверять область действия каждой переменной, которую я буду использовать в измерении.
Возвращаясь к показателю, как мне указать DAX удалить фильтры для текущей даты и предоставить мне дату последней записанной валюты ?
Во-первых, я буду использовать FILTER для таблицы (DimDate).
Функция ALL удаляет примененные фильтры, открывая для меня таблицу DimDate.
Затем я использую MIN , чтобы сообщить DAX, что я хочу использовать часть столбца DimDate, равную либо Last Currency Date, либо Current Date .
Что делать, если последняя дата валютирования и текущая дата не совпадают? Затем всегда используйте дату последней валюты .
Вот почему между 26 и 27 января мера будет равна 1/26. Отсюда правильная дата будет применена к таблице «Курсы валют» , чтобы получить последний зарегистрированный курс валюты .
Последний зарегистрированный курс валюты
Позвольте мне перетащить последний зарегистрированный курс валюты в мою таблицу.
Вы увидите, что 27-е и 28-е число теперь используют 0,9200 в качестве курса валюты , поскольку это тот же курс, который использовался 26-го числа.
Ниже приведена мера, которую я использовал для последнего зарегистрированного курса валюты .
Опять же, я всегда начинаю с определения некоторых переменных. В этом случае я использую выбранную валюту и последнюю отчетную дату валюты .
Я собираюсь использовать выбранную валюту , потому что здесь я имею дело с разными валютами. Вот почему мне нужно точно определить, какая конкретная валюта оценивается в любой момент времени.
В этом примере доступ к различным валютам можно получить с помощью данного слайсера.
Конечно, это не обязательно должен быть используемый слайсер. Он также может исходить от стола или визуального образа. Важно то, что есть фильтр, позволяющий просматривать данные в разных валютах.
Что касается LastReportedDate , то это то же самое, что и Last Reported Currency Date , о которой я говорил ранее.
Для переменной Rate я использовал функцию .
Я ввожу кроссрейт из таблицы фактов для CurrencyRates .
Поскольку у меня есть много валют в одной таблице, я не могу просто использовать дату как единую точку отсчета. Это должно быть сочетание правильной валюты и правильной даты.
Вот почему я также ссылаюсь на то, что тикер валюты равен выбранной валюте .
Я также ссылаюсь на LastReportedDate .
Вот почему, глядя на таблицу, она показывает 26-е число три раза, прежде чем перейти к 29-му.
Конвертированные продажи с использованием последней зарегистрированной ставки по сравнению с использованием текущей даты
Сейчас я на последнем этапе, который включает в себя преобразование продаж с использованием последнего зарегистрированного курса валюты .
По сути, мера просто берет этот последний отчетный курс валюты и умножает его на базовую меру , которая в данном случае является общим объемом продаж .
Как только эта мера будет применена, вы увидите, что эти две даты окажутся пустыми. Это означает, что в эти даты распродаж нет .
Также оказывается, что есть распродажи 27 и 28 числа (там, где ранее не было валютных данных).
Поскольку я ссылался на последний отчетный курс валюты , эти цифры были конвертированы в евро.
На этот раз я покажу вам конвертированные продажи с использованием текущей даты.
На этот раз он смотрит только на текущую дату , а не на последнюю отчетную дату .
Как только я помещаю эту меру в таблицу в другой столбец, она показывает только пустые места 27-го и 28-го числа.
Сравнивая конвертированные продажи между использованием показателя «Последний отчет» и использованием «Текущая дата» , общая сумма показывает огромную разницу.
Если конвертированные продажи с использованием последней отчетной даты показывают в общей сложности более 4 миллионов, конвертированные продажи с использованием текущей даты показывают всего 3,8 миллиона.
Вот почему очень важно понимать, какую переменную вы используете. Если вы посмотрите на Total, то это только покажется, что евро сильно пострадал, понизив стоимость. Но на самом деле падение Total происходит из-за неучтенных данных в таблице «Курсы валют».
Очистка данных
Теперь, когда я заполнил недостающие данные, я собираюсь очистить таблицу.
Я только что добавил сюда колонку Formatted Sales , в которой четко показаны цифры в евро.
Поскольку я прошел так много шагов, я накопил здесь довольно много столбцов.
Но не все из них необходимы для представления данных. Итак, я продолжу и избавлюсь от них, удалив их на панели «Значения» .
После того, как они были удалены, я получаю более чистую таблицу, в которой отображаются только необходимые данные.
Обратите внимание, что я все еще могу изменить валюту, используя слайсер здесь справа.
Чтобы сделать мою таблицу более тщательной, я добавлю все остальные валюты, отключив опцию «Одиночный выбор» .
Это отобразит мои числа в долларах США, евро и британских фунтах стерлингов.
Я также вижу здесь несколько пустых мест, обозначающих дни, когда нет продаж.
Я удалю их, отключив « Показывать элементы без данных ».
Теперь таблица содержит только строки, представляющие даты продаж.
Это дает мне хорошее сравнение чисел, основанных на разных валютах.
Итоги также показывают правильные числа, потому что я использовал для перебора каждой из строк.
Это очень важно. Если вы не используете SUMX , в конечном итоге просто добавите все столбцы, не задумываясь о том, используется ли правильный курс валюты.
Создание таблицы конвертации валют в LuckyTemplates
Логика нескольких валют в LuckyTemplates — пример LOOKUPVALUE
Форматирование валют в LuckyTemplates с использованием DAX
Заключение
Как я упоминал ранее, это не обязательно единственный способ справиться с отсутствующими данными. На самом деле есть масса других способов сделать это.
В некоторых случаях, например, вы можете использовать данные с начала месяца и применять это число ко всей таблице «Курсы валют». Я буду обсуждать эти другие подходы в будущем в отдельных блогах.
На данный момент я использовал этот подход, потому что использование Last Reported Rate имеет для меня наибольший смысл. Я считаю, что это самый интуитивный вариант.
Еще одну вещь, которую я хотел бы подчеркнуть, — это необходимость понимать все из контекста фильтра. Как перезаписать фильтр? Как ввести последние отчетные данные? Это поможет вам понять, как получить правильные числа в конце.
Всего наилучшего,
В этом руководстве показано, как в конечном итоге можно рассчитать разницу между еженедельными результатами продаж с помощью DAX в LuckyTemplates.
Что такое self в Python: примеры из реального мира
Вы узнаете, как сохранять и загружать объекты из файла .rds в R. В этом блоге также рассказывается, как импортировать объекты из R в LuckyTemplates.
В этом руководстве по языку программирования DAX вы узнаете, как использовать функцию GENERATE и как динамически изменять название меры.
В этом учебном пособии рассказывается, как использовать технику многопоточных динамических визуализаций для создания аналитических сведений из динамических визуализаций данных в ваших отчетах.
В этой статье я пройдусь по контексту фильтра. Контекст фильтра — одна из основных тем, с которой должен ознакомиться любой пользователь LuckyTemplates.
Я хочу показать, как онлайн-служба LuckyTemplates Apps может помочь в управлении различными отчетами и аналитическими данными, созданными из различных источников.
Узнайте, как рассчитать изменения вашей прибыли, используя такие методы, как разветвление показателей и объединение формул DAX в LuckyTemplates.
В этом руководстве будут обсуждаться идеи материализации кэшей данных и то, как они влияют на производительность DAX при предоставлении результатов.
Если вы все еще используете Excel до сих пор, то сейчас самое подходящее время, чтобы начать использовать LuckyTemplates для своих бизнес-отчетов.