2017-02-15 41 views
0

мне нужно DAX рассчитать Марки Total, который будет возвращать 1 номер за марк как в общей сложности различных значений, игнорируя неделю & фильтров товаров ,PowerPivot 2013 DAX подводить различные значения и возврат 1 номер для всех

Я исследовал, пытаясь и не суметь в течение 3 дней в настоящее время, и теперь у меня есть 1 день, или в пятницу утром, они будут принимать проект от меня ..

выборочных данных :

Brand   Product Week Weekly_sales 
Brand_1   Prod_1  1 178 
Brand_2   Prod_3  1 7 
Brand_2   Prod_4  1 7 
Brand_2   Prod_5  1 7 
Brand_2   Prod_6  1 7 
Brand_1   Prod_1  2 224 
Brand_2   Prod_3  2 18 
Brand_2   Prod_4  2 18 
Brand_2   Prod_5  2 18 
Brand_2   Prod_6  2 18 
Brand_1   Prod_1  3 186 
Brand_1   Prod_2  3 186 
Brand_2   Prod_3  3 21 
Brand_2   Prod_4  3 21 
Brand_2   Prod_5  3 21 
Brand_2   Prod_6  3 21 
Brand_1   Prod_1  4 172 
Brand_1   Prod_2  4 172 
Brand_2   Prod_3  4 12 
Brand_2   Prod_4  4 12 
Brand_2   Prod_5  4 12 
Brand_2   Prod_6  4 12 

ХОЧЕТ ВЫХОД в силовых шарнирах: 1 номер по торговому марке для любой недели/продукта этой марки, включая дополнительный суб/общие итоги то есть это то, что ось будет выглядеть следующим образом:

I.E. pivoted result would be like this

Я попытался бесчисленные комбинации FILTER, ALLEXCEPT, SUMX, и ближайший я получил это:

BRAND total:= 
CALCULATE( 
     SUMX(ALLEXCEPT(DATA, 
         Data[Brand], 
         Data[Week]),  
      [Vol BR max]), 
     VALUES(Data[Brand]) 
    ) 

где [Vol BR макс] является мерой:

[Vol BR max]:= MAX(Data[Weekly_sales]) 

Это возвращает 1 номер на бренд, как я хотел, но это неправильный итог - не одно из отличных значений по бренду:

MY OUTPUT

Может кто-нибудь мне помочь? Заранее спасибо.

ответ

1

Я думаю, что требование вашего клиента немного суетливо, учитывая структуру данных.

Для выбора строк для подведения итогов вы должны будете пометить их особым образом на основе определенного количества брендов в неделю, это то, что вы должны обрабатывать в источнике своих данных не в PowerPivot или DAX, который должен быть используется только для анализа.

Сначала вам нужно будет создать столбец RowNumber, в Power Query это очень просто, проверьте это Create Index Columns Using Power Query.

Теперь у вас есть дополнительный столбец в вашей модели под названием RowNumber, который суммирует 1 по каждой строке (22 строк в вашей выборке), начиная с 1:

enter image description here

Теперь создать вычисляемый столбец под названием BrandWeek используя это выражение DAX:

BrandWeek = [Brand]&"-"&[Week] 

Затем создать другой вычисляемый столбец ShouldSum, что позволит нам определить, какие Weekly_sales значения S можно было бы суммировать каждую неделю.

ShouldSum = 
CALCULATE (
    COUNTA (Data[BrandWeek]), 
    FILTER (
     Data, 
     [BrandWeek] = EARLIER (Data[BrandWeek]) 
      && [RowNumber] <= EARLIER (Data[RowNumber]) 
    ) 
) 

Наконец мера для использования в Pivot-то вроде этого:

BRAND total := 
CALCULATE (
    SUM (Data[Weekly_Sales]), 
    FILTER (
     ALL (Data), 
     COUNTROWS (
      FILTER (
       Data, 
       EARLIER (Data[ShouldSum]) = 1 
        && EARLIER (Data[Brand]) = [Brand] 
      ) 
     ) 
    ) 
) 

Это то, что вы должны получить:

enter image description here

Примечание Я использую матрицу в Power BI, так как сейчас у меня нет доступа к Power Pivot.

Удачи вам в проекте!

Дайте мне знать, если это поможет.

+0

Это внутренний анализ, и все было бы намного проще, если бы у моего excel 2016 не было ошибки, которая мешала мне использовать таблицы размеров. Я не могу создавать отношения, и по этой причине это дублирует ад с совокупными продажами на уровне бренда в той же таблице, что и обычные продажи! Спасибо, что ответили, это делает работу! –