2017-01-27 8 views
0

Я работаю над получением количества новых продаж и потерянных продаж в отношении продаж в прошлом году и году продаж на сегодняшний день. Я пытаюсь показать это в таблице и затем фильтровать эту таблицу с помощью слайсера в течение года. Ниже приведены формулы, которые я использовал:Неверные итоги с использованием IF и значений() в Power BI

SalesPY = CALCULATE(SUM(SalesData[Value]),SAMEPERIODLASTYEAR('Calendar'[DateKey])) 

SalesYTD = TOTALYTD(SUM(SalesData[Value]), 'Calendar'[DateKey]) 

NewSalesUppdate = SUMX(VALUES(SalesData[CustomerName]),IF([SalesYTD] > 0 && [SalesPY] = 0, [SalesYTD])) 

LostSalesUppdate = SUMX(VALUES(SalesData[CustomerName]),IF([SalesYTD] = 0 && [SalesPY] > 0, -[SalesPY])) 

LostSalesOld = IF([SalesPY] > 0 && [SalesYTD] = 0, -[SalesPY]) 

NewSalesUppdate формула работает, как следует, и подытоживает правильно. Однако LostSalesUppdate не работает, несмотря на довольно большую противоположную формулу по сравнению с NewSalesUppdate. Кажется, что заявление IF никогда не становится правдой. Это странно, потому что формула LostSalesOld показывает правильное значение, но оно не показывает общее количество.

Все советы приветствуются!


Образец данных:

Sample Data

Текущий результат:

Current Result Обратите внимание, как клиент А не было никаких продаж с начала года. LostSalesOld показывает -85000 в продажах, но ничего не отражается в общей сумме. LostSalesUppdate ничего не показывает.

Желаемый результат:

Desired Result Теперь один из потерянных колонок продаж (не имеет значения, какой) имеет значение для клиента А, и в общей сложности

+0

Можете ли вы объяснить с помощью некоторых примеров (например, ежемесячных) данных, что вы хотели бы сделать, и того, что вы сейчас видите? Меры SalesPY и SalesYTD различны (один ограничивается контекстом текущей даты, другой - показателем YTD). По этой причине SalesYTD никогда не будет 0 после продажи в текущем году, тогда как SalesPY часто может быть 0. По этой причине я бы не описал LostSalesUppdate и NewSalesUppdate как противоположные друг другу. – Leonard

+0

Благодарим вас за ответ @Leonard! Я постараюсь быть немного более конкретным. – Derf95

+0

В таблице ниже вы можете увидеть, как я хотел бы, чтобы она работала. Однако, как я уже говорил, формула LostSalesOld показывает -70000 для клиента A в lostSales, но не показывает общее количество.Когда я вместо этого пытаюсь использовать LostSalesUppdated, столбец lostSales просто становится пустым (никогда не становится правдой). Поэтому я знаю, что эта формула работает, когда я использую только оператор IF, но он не работает, когда я добавляю метод Values. Поскольку я фильтрую SalesYTD для каждого клиента, кажется, что для SalesYTD должно быть возможно 0. @Leonard – Derf95

ответ

0

Сосредоточение на LostSalesUppdate, вопрос является одним из контекста. Ваша мера гласит: «Для каждого имени клиента в таблице SalesData покажите мне, что продажи прошлого года были отрицательными, если у них были продажи в прошлом году и в этом году нет».

Проблема (и я признаю, что это тонкий), является то, что потому нет продаж для клиентов А в этом году, клиент А в таблице SalesData не, насколько эта мера касается. Поэтому остальная часть формулы игнорируется.

Что я хотел бы порекомендовать - это добавить отдельную таблицу со списком клиентов, аналогичную вашей таблице дат (одна строка для каждого клиента). Затем обновите формулу LostSalesUppdate, чтобы вместо того, чтобы вытаскивать CustomerName из SalesData, она извлекает ее из вашей новой таблицы клиентов.

LostSalesUppdate = 
SUMX (
VALUES (Customer[CustomerName]), 
IF ([SalesYTD] = 0 && [SalesPY] > 0, - [SalesPY]) 
) 
+0

Благодарим за помощь @ Leonard! Кажется, он работает так, как сейчас. – Derf95