Страницы: 1
RSS
Вывести данные за прошлый год по всему кварталу и данные за прошлый год по кварталу по максимальной дате данных, Power Bi
 
Приветствую всех!
Какой мерой решить следующую задачку!
: Есть данные, которые обновляются каждый день. Например, в примере последняя дата с данными - 11.04.2022. Это второй квартал. Надо получить:
1) данные за второй квартал прошлого года,
2) данные за второй квартал прошлого года только до 11 апреля
В файле смог показать только формулами. Буду применять в Power Bi. Также выделил зеленым диапазон строк, относящиеся к полному кварталу и выделил желтым диапазон строк для данных неполного(до 11 апреля) квартала  
 
щас не за компом, но схема такая, снимаем все фильтры с календаря и ищем максимальную дату в таблице фактов, вычитаем из неё год, сохраняем ее в переменную, а потом уже sumx'ом по dateadd(values(календарь[дата]), -1, year) перебираем строки и для каждой смотрим дата из календаря меньше или больше чем сохраненная в переменной. Если больше, то кажем blank(), иначе считаем сумму или что там вам нужно.
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
в переменную, а потом уже sumx'ом по dateadd(values(календарь[дата]), -1, year) перебираем строки и для каждой смотрим дата из календаря меньше или больше чем сохраненная в переменной. Если больше, то кажем blank(), иначе считаем сумму
Осилил только переменную с максимальной датой. Не знаю даже как вычесть один год
Код
var a=MAX('Таблица1'[дата])

Меня уже убивает что я такой тупой в dax
 
Посмотрите, так нужно Вам?
проверьте azma-1
без таблицы календаря труда сделать
Код
До 11 =
VAR _MxDate =
    CALCULATE ( MAX ( 'Таблица1'[дата] ), ALL ( 'Таблица1' ) )
VAR _MMonth =
    INT ( MONTH ( _MxDate ) )
VAR _DDay =
    INT ( DAY ( _MxDate ) )
RETURN
    CALCULATE (
        CALCULATE (
            SUM ( 'Таблица1'[сумма] ),
            FILTER (
                'Calendar',
                'Calendar'[Quarter] = 2
                    && 'Calendar'[MonthNumber] <= _MMonth
                    && 'Calendar'[DayNum] <= _DDay
            )
        )
    )
Изменено: vikttur - 24.09.2021 21:31:59
 
azma, спасибо! Только надо не так
В вашем решении квартал прописывается явно. Номер квартала тоже надо определять по последней дате. Если последняя дата будет 02.10.2021, то надо три меры:
1) сумма за 01.10.2020 - 31.12.2020
2) сумма за 01.10.2020 - 02.10.2020
3) сумма за 01.10.2021 - 02.10.2021

Еще не хотелось задействовать годы в столбцы сводной. То есть задействуем только товар в строки, и меры в значения. Получается и год надо определить в переменной.
На скрине(немного изменено) к чему стремление
 
 
На примере от azma получилось так. Только беспокоит, не много ли вычислений
Код
=VAR _MxDate =
    CALCULATE ( MAX('Таблица1'[дата]); ALL ( 'Таблица1' ) )
VAR _MYear =INT ( YEAR ( _MxDate ) )
VAR _MMonth =INT ( MONTH ( _MxDate ) )
VAR  _Q = ROUNDUP(_MMonth/3;0)
VAR _Q2 = IF( _Q = 1; 1 ; IF( _Q = 2 ; 4 ; IF( _Q = 3 ; 7 ; 10)))
VAR _DDay =INT ( DAY ( _MxDate ) )
Var _d   = DATE(_MYear-1; _Q2; 1) 
Var _d2 = DATE(_MYear-1; _MMonth; _DDay ) 
RETURN
        CALCULATE ( [_sum];
                 'Календарь'[Date] >= _d && 'Календарь'[Date] <= _d2 )
Разве проще нельзя сделать?
 
Цитата
Михаил Л написал:
Михаил Л
Ещё вариант:
Код
До 11 = var _MxDate=CALCULATE(MAX('Таблица1'[дата]),ALL('Таблица1'))
          var _TDate=CALCULATETABLE(SAMEPERIODLASTYEAR('Calendar'[Date]),'Calendar'[Date]=_MxDate)
          var _StQ=STARTOFQUARTER(_TDate)
          var _EnQ=ENDOFQUARTER(_TDate)
       return
      CALCULATE(SUM('Таблица1'[сумма]),DATESBETWEEN('Calendar'[Date],_StQ,_TDate))
      --CALCULATE(SUM('Таблица1'[сумма]),DATESBETWEEN('Calendar'[Date],_StQ,_EnQ))-- для полного отчета по кварталу

Если убрать SAMEPERIODLASTYEAR, тогда будет отчет по последним кварталу
Изменено: azma - 25.09.2021 15:28:08
 
azma, большое спасибо!
Цитата
azma написал:
Если убрать SAMEPERIODLASTYEAR
А если заменить на DATEADD, то можно сдвигать на года, кварталы..)
Код
2018 = var _MxDate=CALCULATE(MAX('Показатели компании'[Дата]),ALL('Показатели компании'))
          var _TDate=CALCULATETABLE(DATEADD('календарь'[Date],-3,YEAR),'календарь'[Date]=_MxDate)
          var _StQ=STARTOFQUARTER(_TDate)
          var _EnQ=ENDOFQUARTER(_TDate)
       return
      CALCULATE([Выручка_],DATESBETWEEN('календарь'[Date],_StQ,_TDate))

Страницы: 1
Наверх