Страницы: 1
RSS
Помогите, пожалуйста, посчитать в Power Pivot (DAX) кол-во и сумму определенных заказов
 
Добрый день!
Помогите, пожалуйста, посчитать в Power Pivot (DAX) кол-во и сумму определенных заказов (по условию).
Пример во вложении
 
Роза Степанова, добрый день. Соорудил какого-то монстра, может кто-нибудь лаконичнее сделает:
Код
=var filter_order = VALUES('Таблица1'[Заказ покупателя])      -- смотрим, в каких заказаз встречается данная категория
var table1= 
CALCULATETABLE(
   ALLSELECTED('Таблица1');   -- сбрасываем внешний контекст фильтра категории из сводной
   INTERSECT(VALUES('Таблица1'[Заказ покупателя]);filter_order)  -- оставляем только нужные заказы
   )
var table2 =      -- создаем виртуальную таблицу, в которой считаем кол-во встречающихся категорий в заказе + сумма этих заказов
 SUMMARIZE(
    table1;[Заказ покупателя];
   "@ABC_count";DISTINCTCOUNT([Категория]);
   "@summa";SUM([Стоимость продажи (руб.)])   
   )
var rezult_1 = COUNTX(FILTER(table2;[@ABC_count]=1);[@summa])   -- кол-во заказов только с одной категорией
var rezult_2 = SUMX(FILTER(table2;[@ABC_count]=1);[@summa])          -- сумма заказов только с одной категорией
var rezult_3 = COUNTX(FILTER(table2;[@ABC_count]<>1);[@summa]) -- кол-во заказов смешанных категорий
var rezult_4 = SUMX(FILTER(table2;[@ABC_count]<>1);[@summa])       -- сумма заказов смешанных категорий 
return
rezult_2

выбираете нужный rezult и проверяйте
 
Вариант через PQ
Изменено: Михаил Л - 11.03.2022 16:02:55 (Удалил меру из решения))
 
Vladimir Chebykin, у меня тоже просто не получается:) Добавил таблицу категорий (А, В, С, Смешанная) и для проверки 2 заказа с категорией С:

Таблица категорий:
Код
let
  src = Table.FromColumns ( { List.Distinct ( data[Категория] ) & { "Смешанная" } }, { "Категория" } )
in
  src

Меры:
Код
Количество заказов:=
VAR curCat =
    MAX ( 'categories'[Категория] )
VAR countOrders =
    SWITCH (
        TRUE;
        curCat = "Смешанная";
            COUNTROWS (
                FILTER (
                    VALUES ( 'data'[Заказ покупателя] );
                    CALCULATE ( DISTINCTCOUNT( 'data'[Категория] ) )  >= 2
                )
            );
        COUNTROWS (
            FILTER (
                VALUES ( 'data'[Заказ покупателя] );
                CALCULATE (
                    COUNTROWS ( 'data' )
                        = COUNTROWS ( FILTER ( 'data'; 'data'[Категория] = curCat ) )
                )
            )
        )
    )
VAR result =
    IF ( HASONEVALUE ( 'categories'[Категория] ); countOrders; DISTINCTCOUNT( 'data'[Заказ покупателя] ) )
RETURN
    result

Код
Сумма заказов:=
VAR curCat =
    MAX ( 'categories'[Категория] )
VAR sumOrders =
    SWITCH (
        TRUE;
        curCat = "Смешанная";
            SUMX (
                FILTER (
                    VALUES ( 'data'[Заказ покупателя] );
                    CALCULATE ( DISTINCTCOUNT ( 'data'[Категория] ) ) >= 2
                );
                CALCULATE ( SUM ( data[Стоимость продажи (руб.)] ) )
            );
        SUMX (
            FILTER (
                VALUES ( 'data'[Заказ покупателя] );
                CALCULATE (
                    COUNTROWS ( 'data' )
                        = COUNTROWS ( FILTER ( 'data'; 'data'[Категория] = curCat ) )
                )
            );
            CALCULATE ( SUM ( data[Стоимость продажи (руб.)] ) )
        )
    )
VAR result =
    IF ( HASONEVALUE ( 'categories'[Категория] ); sumOrders; SUM ( data[Стоимость продажи (руб.)] ) )
RETURN
    result
Изменено: surkenny - 11.03.2022 09:33:07
 
Обалдеть) Спасибо! Попробую все способы)
Страницы: 1
Наверх