Страницы: 1
RSS
DAX: вычислить значение последней даты предыдущего года
 
Добрый день!

Подскажите пожалуйста, нужно реализовать в DAX следующую динамическую формулу:

( (Значение 2 + Значение 2 на конец предыдущего года) / 2 ) / ( Значение 1 * Количество дней с начало года).

В Excele реализовать получилось. Пример прилагаю.
В DAX создал динамический календарь и вывел количество дней с начало года (хотя чувствую что немного кривовато). Дальше пока идей нет. Пример прилагаю.

Заранее спасибо.    
 
Мера для файла PBI:
Код
Мера = 
var last_day_previous_year = 
CALCULATE(MAX('base'[Дата]);
    FILTER(ALL('Календарь');'Календарь'[Год]=MAX('Календарь'[Год])-1)
)
return
DIVIDE(
    (CALCULATE(SUM(base[Значение 2]);'base'[Дата]=last_day_previous_year)+SUM(base[Значение 2]))/2;
    SUM(base[Значение 1])*MAX('base'[К-ство дней]);
    BLANK()   
)
)
Изменено: Vladimir Chebykin - 02.07.2020 11:52:06
 
Вариант темы: "DAX: вычислить значение последней даты предыдущего года" - вся проблематика задачи ТС именно в этом.
Изменено: Vladimir Chebykin - 02.07.2020 12:20:45
 
Большое спасибо, мера сработала!

Единственный вопрос,
мы использовали загруженную из источника информацию по количеству дней: 'base'[К-ство дней]

в тоже время, в таблице Календарь, я создал аналогичный столбец: К-ств дней с начало года = DATEDIFF( min ('Календарь'[Date]), 'Календарь'[Date] ,  DAY ).

В данном случае его так же можно использовать для расчета,  но только при ситуации когда минимальная дата в календаре равна последней дате предыдущего года. Если она будет другой или начнется последующий год, столбец не будет корректно отрабатывать.
Возможно количество дней с начала года можно как-то корректней рассчитать?
Изменено: sogu - 02.07.2020 17:01:31
 
Цитата
sogu написал:
Если она будет другой или начнется последующий год, столбец не будет корректно отрабатывать.
вопрос не понятен. 01.01.2021 года какое кол-во дней должно отражаться: 366 или 1. Лучше в эксельке накидайте пример календаря на пару лет и какие значения должны получиться в итоге в столбце.
 
Если 01.01.2021, то должно 1. То есть нужно считать количество дней в каждом отдельном году.

Я себе это представляю что возможно нужен какой-то аналог WEEKDAY, который определяет не номер дня недели, а номер дня года от первой даты года в календаре.

Пример сделал. То есть, столбец К-ство дней желательно получать расчетным путем, так как календарь динамический.
 
Попробуйте такой вариант для вычисляемого столбца в календаре, должно сработать:
Код
день_года = 
DATEDIFF(
     CALCULATE(MIN('Календарь'[Date]);
            FILTER(ALL('Календарь');'Календарь'[Год]=EARLIER('Календарь'[Год])
        )
    ); 
    'Календарь'[Date] + 1 ;
    DAY
)
 
Vladimir Chebykin, благодарю за комплексную и оперативную помощь.
Все сработало.
 
Для вычисляемого стобца можно и без EARLIE обойтись
Код
=
VAR thisMinDate = MIN([Дата])
VAR thisStartYear = DATE(YEAR([Дата]), 1, 1)
RETURN
SWITCH( TRUE(),
YEAR([Дата]) = YEAR(thisMinDate), DATEDIFF(thisMinDate, [Дата],DAY) + 1,
DATEDIFF(thisStartYear, [Дата],DAY) + 1
)
 
В мере можно воспользоваться и таким вариантом
Код
Days:=CALCULATE(COUNTROWS(Table1), DATESYTD(Table1[Дата]))
 
Спасибо, все варианты рабочие, возьму на вооружение.  
 
Добрый день!
Подскажите, пожалуйста, где может быть ошибка в формуле

ALLYears =
VAR
years=MAX('Таблица'[YEARs])-SELECTEDVALUE('Таблица'[YEARs])
RETURN
CALCULATE([SalesYTD],DATEADD('Таблица'[YEARs],-years,YEAR))
необходимо чтобы накопительный итог показывал отдельно все года
Страницы: 1
Наверх