Страницы: 1
RSS
Power Pivot некорректно считает сумму итога за предыдущий год
 
Добрый день.

Power Pivot некорректно считает сумму итога за предыдущий год.
Имеется таблица с полями: dates, Name, Cat 1, Cat 2, Value за 2017 и 2018 годы.

Фильтр таблицы - 2018 год
Задача состоит в том, чтобы  составить правильно меру, которая бы считала по каждому Name Value-50 за предыдущий год, в том числе в итоге и подитогах.
К сожалению, имеющихся знаний не хватает.

Мои меры:
sales (0):=SUM(BAZA[Value])-50     -  для текущего года, работает
sales (-1):=CALCULATE([sales (0)];SAMEPERIODLASTYEAR('Calendar'[Date]))             -  для прошлого года. Работает для отдельных значений. Итог считается некорректно.
m_sales (0):=SUMX(SUMMARIZE('BAZA';[Name];"__value";[sales (0)]);[__value]) -  для текущего года. Корректно считает итоги.

m_sales (-1):=SUMX(SUMMARIZE('BAZA';[Name];"__value";[sales (-1)]);[__value])   - для прошлого года. Некорректно считает. Ничего не считает. периодически выдает ошибку, что функция работает только с непрерывными интервалами дат.

Прошу помочь с правильной формулой.
Изменено: timel1 - 01.03.2019 21:28:59
 
Цитата
timel1 написал:
Имеется таблица
Докажите!  :)  
 
Привет, Алексей.
Коллега, тут и доказательства, что неправильно считает, нет, просто голословное утверждение, по принципу - я не могу ошибаться :)
 
Цитата
timel1 написал:
=SUM(BAZA[Value])-50 - для текущего года, работает
и итогах тоже? что-то сомневаюсь.
F1 творит чудеса
 
Первая формула итог тоже считает неправильно.

Таблицу выложу через 1,5-2 часа. Первый пост чуть подредактировал. Задача именно в том, чтобы найти корректную формулу меры для итогов и подитогов предыдущего периода.

Причём в идеале период должен автоматически меняться на такой же предыдущего года. Это значит при выборе в фильтре 2018 года, должны считаться данные 2017 года. При выборе 2 квартала 2018 должен считаться 2 квартал 2017.

Заранее спасибо за помощь!
Изменено: timel1 - 04.03.2019 08:25:35
 
Не могу посмотреть файл сейчас, но:
1) если для каждого Name нужно вычесть 50 из Value, то это однозначно SUMX, то есть мера [m_sales (0)]
2) та же мера для предыдущего года:
Код
m_sales (-1) = CALCULATE([m_sales (0)];SAMEPERIODLASTYEAR('Calendar'[Date]))

Проверьте
Изменено: Максим Зеленский - 04.03.2019 10:20:55
F1 творит чудеса
 
Цитата
Максим Зеленский написал: m_sales (1) = CALCULATE([m_sales (0)];SAMEPERIODLASTYEAR('Calendar'[Date]))Проверьте
Большое Спасибо. Все получилось.

Возможно ли как то сделать так, чтобы значения m_sales (0) и m_sales (1)  выводилось только при условии, что в прошедшем периоде/будущем оно тоже было?
Например m_sales (0) выводится только при условии, что есть m_sales (1)  и наоборот.

Последующие формулы в этом случае не работают (работают, но выводят некорректные итоги):
m_sales_IF_(0):=IF([m_sales (0)]>0&&[m_sales (-1)]>0;[m_sales (0)])
m_sales_IF_(-1):=IF([m_sales (0)]>0&&[m_sales (-1)]>0;[m_sales (-1)])
Изменено: timel1 - 04.03.2019 13:18:37
 
Опять же нужен SUMX(values(table[Name]), мера IF...)
F1 творит чудеса
 
Цитата
Максим Зеленский написал:
Опять же нужен SUMX(values(table[Name]), мера IF...)
К сожалению не могу  понять как это применить...(
составил формулу для текущего периода:
Код
zz_sales (0):=SUMX(SUMMARIZE('BAZA';[Name];"__value";[sales (0)]);IF([sales (-1)]>0&&[__value]>0;[__value]))
она работает, итоги считает корректно
при этом для предыдущего периода не получается сделать:
формула
Код
zz_sales (-1):=CALCULATE([zz_sales (0)];SAMEPERIODLASTYEAR('Calendar'[Date])) 
 ничего не выводит.
Нет понимания, как сравнить прошлый преиод с текущим в этом случае..
Изменено: timel1 - 05.03.2019 10:43:15
 
Всё проще.
Следите за руками:
Код
SumOfValue = SUM ( 'BAZA'[Value] )

sales (0) = [SumOfValue] - 50

m_sales (0) =
SUMX (
    ADDCOLUMNS ( SUMMARIZE ( BAZA, BAZA[Name] ), ""_value"", [sales (0)] ),
    [_value]
)

m_sales (-1) =
CALCULATE ( [m_sales (0)], SAMEPERIODLASTYEAR ( 'Календарь'[Date] ) )


Следующие две меры высчитывают результат, опять же построчно для BAZA[Name] проверяя на сумму прошлого/будущего года
Код
zz_sales (0) =
SUMX ( VALUES ( 'BAZA'[Name] ), IF ( [m_sales (-1)], [m_sales (0)] ) )

zz_sales (-1) =
SUMX ( VALUES ( 'BAZA'[Name] ), IF ( [m_sales (0)], [m_sales (-1)] ) )


Можно немного оптимизировать последние формулы, но лень
F1 творит чудеса
 
Цитата
Максим Зеленский написал:
Всё проще.Следите за руками:
Огромное Вам Спасибо.  
Страницы: 1
Наверх