Страницы: 1
RSS
Создание меры в DAX. Ошибка "функция dateadd работает только с непрерывным диапазоном дат"
 
Добрый день

Пытаюсь добавить в сводную таблицу меру, которая должна выводить продажи за прошлый месяц, относительно текущего, но выдаёт ошибку "функция dateadd работает только с непрерывным диапазоном дат"

В чем может быть проблема?
Файл https://drive.google.com/file/d/1xbGqxY3RQNr5JEdnO5ZHscdWK0o_dxSG/view?usp=sharing
Код
Продажи прошлого месяца:=CALCULATE([Продажи];DATEADD('Календарь'[Дата];-1;MONTH))
Изменено: Nik021 - 26.09.2020 16:02:26
 
Доброе время суток
Цитата
Nik021 написал:
В чем может быть проблема?
Вы не находите, что в именно в этом
Цитата
функция dateadd работает только с непрерывным диапазоном дат
:qstn:
 
Андрей VG, функция DATEADD ссылается на непрерывный диапазон дат, как и положено.
Просто, если в столбцах сводной оставить только год, то такой ошибки нет, а если добавить в столбцы название месяцев, то ошибка есть. Мне вот этот момент не понятен.  
 
Цитата
Nik021 написал:
DATEADD ссылается на непрерывный диапазон дат
тогда сдаюсь :)  По картинкам лечить могут только гуру. Я всего лишь дилетант.
 
Андрей VG, добавил файл
 
Так должно работать
Код
Продажи прошлого месяца:=
CALCULATE(
    [Продажи],
    PREVIOUSMONTH('Календарь'[Дата])
)

Ваша мера то же будет работать если вы поменяете групприровку, сначала год - потом месяц
 
DrillPipe, спасибо, вроде работает.
Такая группировка принципиальна, я не могу её поменять.
Еще вопрос, а как указать в фильтре любой другой период, который не предусмотрен стандартным набором функций? Например, кроме прошлого месяца еще нужен текущий месяц прошлого года и тд.  
 
Nik021, я обычно так делаю меры за предыдущий период

Код
Продажи_PM:=CALCULATE([Продажи], PARALLELPERIOD('Календарь'[Дата], -1, MONTH))
Продажи_PY:=CALCULATE([Продажи], PARALLELPERIOD('Календарь'[Дата], -12, MONTH))

 
Ну, тут уже от задачи зависит.
Если развернуть такой вариант до конкретной даты, то PARALLELPERIOD возвращает результат за весь период, а не за конкретную дату. А вот  DATEADD  возвращает результат за конкретный день.
То есть, если всегда пользоваться PARALLELPERIOD то можно получить неверный результат в ряде случаев.
Нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее!
 
DrillPipe, воспользовался этим приемом, спасибо.
 
Добрый день,
У меня точно такая же ошибка.
Есть следующая мера : [Qm] Плано-Факт]
Код
CALCULATE (
    IF (
        SUMX ( 'Date', IF ( 'Date'[Дата] = STARTOFMONTH ( 'Date'[Дата] ), 1, 0 ) ) > 0,
        CALCULATE ( [Плано-Факт тн], NEXTMONTH ( DATEADD ( 'Date'[Дата], -1, MONTH ) ) ),
        BLANK ()
    ),
    FILTER ( 'Date', [Дата] >= EOMONTH ( TODAY (), -2 ) + 1 )
)
Собирает сумму плано-факта за месяц и кидает на первый день месяца.

При использовании данной меры в наборе команд (см ниже) выдает ошибку :  "функция dateadd работает только с непрерывным диапазоном дат"
Код
EVALUATE
SUMMARIZECOLUMNS (
    'Date'[Неделя], CU[Group], CU[CU]   
     ,
    FILTER (
        ships,
        [Date]>(  TODAY () - WEEKDAY ( TODAY (), 2 ) - 70)
         
            && CONTAINS (
                DATATABLE ( "Вид Покупателя", STRING, { { "Ключевые клиенты" } } ),
                [Вид Покупателя], RELATED ( Clients[Вид Покупателя] )
            )
            && CONTAINS (
                DATATABLE ( "Директорат", STRING, { { "Москва" }, { "Золотое кольцо" } } ),
                [Директорат], RELATED ( Geo[Directorat] )
            )
    ),
    "[Qm] Плано-Факт", [[Qm]] Плано-Факт]
) 
EVALUATE ROW("[Qm] Плано-Факт", [[Qm]] Плано-Факт])

Просьба помочь, заранее спасибо. :)  
Страницы: 1
Наверх