Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

В этом руководстве рассматривается выбор или фильтрация определенной даты в отчетах данных LuckyTemplates . Материал, использованный в этом руководстве, взят с . Вы узнаете, как решить проблему и поймете используемые методы. Вы можете посмотреть полное видео этого урока в нижней части этого блога.

Оглавление

Общие сведения об отчете данных в LuckyTemplates

Это образец отчета с данными, который будет использоваться. Он состоит из одного визуала таблицы и двух слайсеров.

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Цель состоит в том, чтобы выбрать дату в столбце «Дата» на слайсере. Это означает, что после выбора даты в слайсере визуализация таблицы покажет предыдущие дни с интервалом в 7 дней. В этом примере данные, выбранные в срезе даты, — 12 мая 2007 г.

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Таблица должна показать предыдущую с разницей в 7 дней между датами.

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Вам также необходимо создать параметр «что если» , чтобы динамически отображать количество дат на основе выбора. Если вы выберете 3 , визуальная таблица должна отображать только 3 даты.

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Воссоздание таблицы и визуализаций

Первый шаг — создать параметр «что если» . В рабочем столе LuckyTemplates перейдите на вкладку «Моделирование» и выберите «Новый параметр» .

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Добавьте имя к параметру и установите Тип данных на Целое число . Затем установите минимальное, максимальное, приращение и значения по умолчанию, как показано на изображении ниже. Добавьте слайсер на страницу, установив флажок.

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

После того, как вы нажмете OK, будет создан слайсер. Преобразуйте слайсер в список, нажав кнопку раскрывающегося списка и выбрав Список.

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Следующее, что нужно сделать, это создать дублированную таблицу дат, которая будет использоваться как отсоединенная таблица дат. Перейдите в редактор запросов Power и продублируйте Dates .

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Затем переименуйте дубликат DisDate и нажмите «Закрыть и применить».

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Загрузка таблиц дат и срезов в LuckyTemplates

После загрузки дублированной таблицы в модель LuckyTemplates создайте срез со столбцом дат из отключенной таблицы дат. Откройте таблицу DisDate и перетащите Date на холст.

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Затем превратите визуализацию в слайсер.

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

После этого измените формат слайсера на List . Тогда визуализация будет выглядеть так.

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Затем продублируйте слайсер и измените поле данных на столбец «Дата» из таблицы «Даты».

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Выбор даты в слайсере «Даты» ограничит количество видимых строк таблицы «Продажи» в матрице. Если вы выберете 14 марта 2005 г., в матрице будет отображаться только эта дата.

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Результат и мера не будут работать, если вы используете эту настройку. Причина в том, что еще до того, как мера начнет работать, доступ к матрице уже отфильтрован. Для этих отфильтрованных значений вы не сможете генерировать даты с интервалами.

Создание мер для слайсеров выбора

Вам нужно создать настройку дат, которая не фильтрует матрицу напрямую, когда выбор помещается над срезом. Фильтрация матрицы должна осуществляться через код DAX , а не непосредственно из слайсеров. Таким образом, если вы выберете дату из слайсера DisDate, в матрице не произойдет никаких изменений.

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Это происходит потому, что таблица DisDate не имеет отношения к таблице Dates. Вот почему отключенная таблица необходима.

Удалите срез с таблицей Dates и создайте первую меру. Мера извлечет значение, выбранное из среза «Даты для показа». Первая переменная, которую вам нужно создать, это ValuesToShow . Затем приравняйте его к значению Dates To Show и введите RETURN , чтобы вернуть выбранные значения.

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Перетащите эту меру в матрицу. Если вы выберете 6 в слайсере «Даты для показа», столбец «Мера» в матрице также даст 6.

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Затем создайте еще одну переменную, которая будет получать дату отключения, выбранную в слайсере.

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

После этого вы увидите значение, выбранное в слайсере DisDate, показанном в столбце «Мера».

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Создание вычисляемой таблицы

Создайте список дат с интервалом в 7 дней, начиная с выбранной даты в слайсере. Затем убедитесь, что матрица будет генерировать количество дней на основе выбора среза «Даты для показа». Для этого сначала нужно создать вычисляемую таблицу .

Вычисляемая таблица помогает визуализировать, как даты генерируются в коде DAX. Перейдите в представление данных и нажмите «Новая таблица».

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Введите переменную SelectedDate и приравняйте ее к функции DATE . Затем введите дату в скобках. Затем создайте еще одну переменную, которая будет указывать количество дат, которые вы хотите отобразить в матрице. Введите DatesToShow и приравняйте его к количеству дат.

После этого создайте еще одну переменную, которая будет генерировать список дат с интервалом в 7 дней. Введите DatesList и используйте функцию GENERATESERIES . — это функция, которая генерирует список чисел, передавая несколько аргументов.

В качестве первого аргумента введите SelectedDate – (DatesToShow * 7)  в качестве начального значения. Затем введите SelectedDate в качестве конечного значения. В качестве последнего аргумента введите 7 для значения приращения или интервала между датами. После этого закройте функцию и введите RETURN и DateList .

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Затем вы можете увидеть таблицу, содержащую семь значений, начиная с 5 мая и обратно с шагом семь.

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Теперь вы заметите, что он создал слишком много дат, чем вам нужно. В исходном образце отчета последней датой, показанной с теми же параметрами «Даты для отображения» и «Дата», было 31 марта.

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Чтобы исправить это, вы можете либо изменить значение переменной DatesToShow на 5, либо вычесть 1 из 6. В этом примере 1 вычитается из 6.

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

После этого вы увидите, что значения заканчиваются 31 марта.

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Вставка дат в контекст фильтра

Затем вам нужно использовать и вставить эти даты в контекст фильтра даты. Вам также необходимо рассчитать сумму продаж в контексте фильтра. Итак, скопируйте синтаксис GENERATESERIES и вернитесь к своей мере.

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Добавьте в меру новую переменную и введите DatesToShow . Затем приравняйте эту переменную к синтаксису GENERATESERIES . Измените переменные внутри синтаксиса с SelectedDate на DisSelectedDate и DatesToShow на ValuesToShow .

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Наконец, создайте переменную для результата. Приравняйте его к функции CALCULATE над Total Sales и DatesToShow, чтобы ввести все даты, полученные из синтаксиса GENERATESERIES , в контекст фильтра. После этого введите Result в функцию RETURN .

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Теперь вы увидите, что в матрице не отображаются даты, которые запрашивает код DAX. Если вы введете в матрицу показатель Total Sales, вы увидите, что код возвращает саму сумму Sales.

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Проблема с мерой заключается в том, что дата, созданная в синтаксисе GENERATESERIES , имеет происхождение данных с отключенной таблицей дат. Это означает, что таблица Date не связана с таблицей Sales. Вот почему, когда список дат применялся в контексте фильтра, он не включал таблицу «Продажи».

Вам нужно использовать функцию для создания виртуальных отношений и применения контекста фильтра.

Использование TREATAS для исправления даты в матрице LuckyTemplates

Вам необходимо обрабатывать значения, полученные из синтаксиса GENERATESERIES , как если бы они были частью исходной таблицы Date. По сути, это создание родословной со столбцом Date таблицы Date, которая находится в модели данных.

Поэтому в переменной Result введите TREATAS после таблицы Total Sales и укажите аргументы. В качестве первого аргумента укажите столбец или таблицу, которая не имеет связи. В этом случае используется столбец DatesToShow .

В качестве второго аргумента укажите столбец, с которым вы хотите сопоставить происхождение столбца в первом аргументе. В этом примере используется столбец «Дата» из таблицы «Даты».

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Однако даже с исправлениями в коде столбец Measure в матрице по-прежнему не будет отображать правильные значения при использовании слайсера. Вы также можете заметить, что значения внутри столбца повторяются.

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Проблема заключается в том, как был написан код. TREATAS применяет все значения к контексту фильтра, а переопределяет существующий контекст фильтра на выбранную дату со всеми значениями, полученными из функции GENERATESERIES .

Использование функции KEEPFILTERS в TREATAS

Чтобы убедиться, что фильтр внедряется в фильтр без переопределения существующего контекста фильтра, вам нужно использовать функцию KEEPFILTERS . изменяет семантику фильтрации CALCULATE .

Введите KEEPFILTERS перед функцией TREATAS и подтвердите измерение.

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Теперь вы увидите, что значения в столбце «Мера» не повторяются.

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Если вы развернете месяцы май и апрель, вы увидите, что значения в столбце «Показатель» равны значениям в столбце «Общий объем продаж».

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Удалите показатель Total Sales из матрицы и выберите число в срезе Dates To Show. Затем вы увидите эквивалентное количество дат, отображаемых в матрице.

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Устранение проблем с отсутствующими датами в матрице LuckyTemplates

Другая проблема с этим отчетом заключается в том, что когда вы выбираете 8 в слайсере DatesToShow , матрица не изменяется.

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Если вы выберете 9 в слайсере, матрица покажет только 8 дат. Вы также заметите, что 17 марта отсутствует в списке дат.

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Причина в том, что в некоторые дни в таблице «Дата» нет соответствующих транзакций в таблице «Продажи». Таким образом, мера возвращает пустое значение для этих дат. Поскольку он возвращает пустое значение, код, выполняющийся за матрицей, удаляет пустые строки из результата.

Затем LuckyTemplates использует возвращенный результат для заполнения матрицы. Так как некоторые дни возвращаются пустыми, вы не можете видеть Продажи и записи этих дней в матрице.

Если вы хотите показать что-то за дни без продаж в ваших данных, вернитесь к показателю и удалите синтаксис CALCULATE .

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Использование DAX для устранения пропущенной даты в LuckyTemplates

Создайте линию передачи данных, написав TREATAS в столбцах DatesToShow и Date таблицы Dates . Затем проверьте, все ли даты, возвращаемые функцией TREATAS , включены в контекст фильтра.

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Оттуда разделите выполнение на несколько переменных. Измените имя переменной с Result на CreateDataLineage , чтобы показать, что она хранит результат TREATAS .

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Затем создайте еще одну переменную, которая будет содержать все даты, видимые в контексте фильтра, поступающего из матрицы. Введите VisibleDate в качестве имени переменной и используйте в столбце Date .

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Следующее, что нужно сделать, это создать столбец по результату функции TREATAS , который будет содержать сумму продаж. Напишите DatesWithSales в качестве имени переменной и используйте вместо переменной CreateDataLineage .

Внутри функции создайте новый столбец и назовите его « Сумма продаж» с мерой «Общий объем продаж» в контексте строки, чтобы инициировать переход контекста.

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

После этого создайте переменную, которая будет проверять, включены ли в контекст фильтра все даты, хранящиеся в переменной DatesWithSales . Введите IsDateInFilterContext в качестве имени переменной и используйте функцию .

Оттуда напишите DatesWithSales в качестве первого аргумента функции. Затем введите Dates[Date] IN VisibleDate в качестве второго аргумента, чтобы проверить, включена ли дата, содержащаяся в таблице DatesWithSales , в переменную VisibleDate .

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Последняя переменная, которую вам нужно создать, это Result . Используйте функцию для переменной IsDateInFilterContext . Напишите [@Sales Amount] + 0 , чтобы включить дни, которые ранее не были включены.

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

После всего этого вы увидите в матрице недостающую дату — 17 марта.

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Использование +0 в исходной мере

На предыдущих шагах показано, как построить меру, чтобы включить все даты, для которых нет транзакций в таблице фактов. Теперь, если вы используете + 0 в исходной мере, которую вы создали, все значения в столбце «Мера» будут равны 0.

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Выберите конкретную дату в LuckyTemplates с помощью расчета DAX

Причина в том, что переменная Result содержит либо пустое значение, либо значение Sales. Таким образом, если вы добавите 0, вы замените пробел на 0. Помните, что сводные столбцы удаляют пустые строки из набора данных. Верните их в LuckyTemplates, чтобы они могли отображать только ограниченные строки, а не пробелы.

Но поскольку добавляется 0, итоговый столбец вынужден сохранять строки. Затем он возвращает таблицу, содержащую все даты, существующие в таблице «Даты», и показывает ноль везде, где это применимо, или когда она пуста.

По этой причине вам нужно переписать меру таким образом, чтобы вам нужно было только добавить 0 к датам, которые видны в контексте фильтра и включены в переменную DatesToShow .


Соединители Power Automate: число, текст и дата, время,
расширенная таблица дат, функция Power Query M
Power Query LuckyTemplates | Создание новых записей на основе полей даты

Заключение

Чтобы создать отчет с данными, который позволяет выбрать конкретную дату в матрице LuckyTemplates , необходимо использовать вычисляемые таблицы и функции DAX . Функции и меры DAX должны быть написаны таким образом, чтобы можно было легко получить результаты.

Leave a Comment

Расчет недельных продаж с помощью DAX в LuckyTemplates

Расчет недельных продаж с помощью DAX в LuckyTemplates

В этом руководстве показано, как в конечном итоге можно рассчитать разницу между еженедельными результатами продаж с помощью DAX в LuckyTemplates.

Что такое self в Python: примеры из реального мира

Что такое self в Python: примеры из реального мира

Что такое self в Python: примеры из реального мира

Как сохранить и загрузить файл RDS в R

Как сохранить и загрузить файл RDS в R

Вы узнаете, как сохранять и загружать объекты из файла .rds в R. В этом блоге также рассказывается, как импортировать объекты из R в LuckyTemplates.

Новый взгляд на первые N рабочих дней — решение для языка кодирования DAX

Новый взгляд на первые N рабочих дней — решение для языка кодирования DAX

В этом руководстве по языку программирования DAX вы узнаете, как использовать функцию GENERATE и как динамически изменять название меры.

Продемонстрируйте идеи с помощью метода многопоточных динамических визуализаций в LuckyTemplates

Продемонстрируйте идеи с помощью метода многопоточных динамических визуализаций в LuckyTemplates

В этом учебном пособии рассказывается, как использовать технику многопоточных динамических визуализаций для создания аналитических сведений из динамических визуализаций данных в ваших отчетах.

Введение в фильтрацию контекста в LuckyTemplates

Введение в фильтрацию контекста в LuckyTemplates

В этой статье я пройдусь по контексту фильтра. Контекст фильтра — одна из основных тем, с которой должен ознакомиться любой пользователь LuckyTemplates.

Лучшие советы по использованию приложений в онлайн-службе LuckyTemplates

Лучшие советы по использованию приложений в онлайн-службе LuckyTemplates

Я хочу показать, как онлайн-служба LuckyTemplates Apps может помочь в управлении различными отчетами и аналитическими данными, созданными из различных источников.

Анализ изменений маржи прибыли с течением времени — аналитика с LuckyTemplates и DAX

Анализ изменений маржи прибыли с течением времени — аналитика с LuckyTemplates и DAX

Узнайте, как рассчитать изменения вашей прибыли, используя такие методы, как разветвление показателей и объединение формул DAX в LuckyTemplates.

Идеи материализации кэшей данных в DAX Studio

Идеи материализации кэшей данных в DAX Studio

В этом руководстве будут обсуждаться идеи материализации кэшей данных и то, как они влияют на производительность DAX при предоставлении результатов.

Бизнес-отчетность с использованием LuckyTemplates

Бизнес-отчетность с использованием LuckyTemplates

Если вы все еще используете Excel до сих пор, то сейчас самое подходящее время, чтобы начать использовать LuckyTemplates для своих бизнес-отчетов.