Страницы: 1
RSS
DAX_Сумма с фильтром по Мере -1, Мера с фильтром по значению другой меры, уменьшенной на 1
 
Приветствую экспертов Power Pivot и прочих интересующихся!
Просьба помочь с маленьким, но важным вопросом. Не работает мера (Продажи_АналогПериодПрошлГода_Млн Руб), у которой в фильтре указана другая мера (ПредАнализируем_Год), значение которой = 2021. При этом, если заменить меру на константу "2021", то все работает. Манипуляции с форматами не помогли. Календарь в данном случае я использовать не могу (в этом поле год у меня "синтетический", к календарю привязано другое поле Год). Очень хочется обойтись без константы и сделать отчет "мобильным".

Приложить файл не удалось, выложила на яндекс диск: https://disk.yandex.ru/i/uGNzyqAyy0zIqw

Здесь привожу сами меры:
ПредАнализируем_Год:=[Анализируем_Год]-1  //это = 2021

Продажи_АналогПериодПрошлГода_Млн Руб:=CALCULATE([Продажи_Млн Руб];FILTER('Таблица1';'Таблица1'[Год_нед]=[ПредАнализируем_Год]&&'Таблица1'[Неделя]<=[Анализируем_Неделя])) //эта меры выдает результат "пусто"

Вариант2_Продажи_АналогПериодПрошлГода_Нед_Млн Руб:=CALCULATE([Продажи_Млн Руб];FILTER('Таблица1';'Таблица1'[Год_нед]=2021&&'Таблица1'[Неделя]<=[Анализируем_Неделя]))  //эта мера работает
 
Цитата
написал:
]<=[Анализируем_Неделя])
Вы уверены что хотите меньше или равно. в фильтре у Вас стоит 1 неделя?!
напишите
Анализируем_Год=ALCULATE(MAX('Таблица1'[Год_нед]);ALL('Таблица1'))
Изменено: azma - 22.07.2022 16:49:05
 
Цитата
написал:
у которой в фильтре указана другая мера (ПредАнализируем_Год), значение которой = 2021
нет:
 
Екатерина Смирнова, а поиском воспользоваться?
По-моему, ТУТ доступно расписал сравнение периодов разных лет :)
Больше уже готовых шаблонов ТУТ.
Изменено: surkenny - 22.07.2022 16:51:00
 
Кстати да, surkenny прав.
Мне тоже кажется, что всякие вычисления, связанные со временем лучше делать через DATEADD или PARALLELPERIOD

То есть, я бы делал так:
(но надо быть кстати аккуратным с DATEADD и PARALLELPERIOD - они могут возвращать немного разные периоды. гугли в ютубе прям так DATEADD vs PARALLELPERIOD - там чел из Италии норм объяснит, либо смотри посты surkenny )
Код
выручка прошлый год = calculate ([выручка]; parallelperiod('ТабличкаДат'[Дата];-1;YEAR))
Изменено: PowerBI_WannaBe - 22.07.2022 16:57:42
 
Цитата
Вы уверены что хотите меньше или равно. в фильтре у Вас стоит 1 неделя?!
Уверена, в реальном файле недель гораздо больше. Проблема не в неделе, я показала это в примере. Мера, которую вы изменили, у меня работает корректно  
Изменено: Екатерина Смирнова - 24.07.2022 09:46:48
 
Цитата
нет:  
если установить фильтр по году (2022), то будет да
Изменено: Екатерина Смирнова - 24.07.2022 09:46:02
 
Цитата
По-моему,  ТУТ  доступно расписал сравнение периодов разных лет
Больше уже готовых шаблонов  ТУТ .
Спасибо. Я написала, что календарём (а значит и всеми функциями дат) пользоваться в данном случае не могу. И даже объяснила почему  
Изменено: Екатерина Смирнова - 24.07.2022 09:45:34
 
Цитата
Код
выручка прошлый год = calculate ([выручка]; parallelperiod(  'ТабличкаДат'[Дата];-1;YEAR))   
 
спасибо, эти функции я уже усвоила. В данном случае не могу их использовать, тк это поле год не привязано к календарю. Я сразу написала об этом. Здесь год это просто число, в этом и сложность
Изменено: Екатерина Смирнова - 24.07.2022 09:44:44
 
Екатерина Смирнова
попробуйте так:
Код
выручка прошлый год = calculate ([выручка]; parallelperiod('ТабличкаДат'[Дата];-1;YEAR))

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

Изменено: PowerBI_WannaBe - 22.07.2022 17:49:21
 
Цитата
Код
выручка прошлый год = calculate ([выручка]; parallelperiod(  'ТабличкаДат'[Дата];-1;YEAR))
эх... Вы не читаете условия задачи до конца или не вникаете... В этой задаче год - просто число. И его нельзя обработать как дату
Изменено: Екатерина Смирнова - 24.07.2022 09:44:58
 
Екатерина Смирнова, так что ли?
Код
_Продажи_АналогПериодПрошлГода_Млн Руб :=
VAR curY =
    MAX ( 'Таблица1'[Год_нед] )
VAR valuePrevY =
    CALCULATE ( [Продажи_Млн Руб]; 'Таблица1'[Год_нед] = curY - 1 )
VAR result =
    IF ( HASONEVALUE ( 'Таблица1'[Год_нед] ); valuePrevY )
RETURN
    result
 
Цитата
а вот это очень может быть. Благодарю за дельное предложение, попробую когда доберусь до компа
Изменено: Екатерина Смирнова - 24.07.2022 09:41:56
 
Цитата
к сожалению, этот вариант тоже выдает результат "пусто"
Изменено: Екатерина Смирнова - 24.07.2022 09:40:07
 
Екатерина Смирнова,  прекратите бездумное цитирование! Не цитаты у Вас, а полные копии предыдущих сообщений. Забудьте про эту кнопку!
 
Екатерина Смирнова, Вы, наверное, не туда смотрите:) Не будет компа до вечера завтра. Но результат за предыдущий год считается корректно.
Возможно, кто-то сможет в файл мою меру вставить и показать.
 
Юрий М, а почему вы на меня кричите? Можно же спокойно объяснить, как правильно делать  
 
Я не кричал ))
Крики на форуме - это когда текст на верхнем регистре )
 
surkenny, всё работает в сводной, спасибо, вы красавчик просто!
P.S. только что узнала из бесплатного курса по dax, что календарей в модели может быть несколько. Значит, свою задачу я могла бы решить через создание второго календаря и далее через функции дат)) Но через переменные круче, по-моему 👍
 
Екатерина Смирнова,  А теперь вернитесь и удалите цитаты, они только усложняют чтение постов.
По вопросам из тем форума, личку не читаю.
 
БМВ, удалила, как смогла)
 
Цитата
написал:
Значит, свою задачу я могла бы решить через создание второго календаря и далее через функции дат
иногда достаточно неактивных связей и USERELATIONSHIP
Страницы: 1
Наверх