Страницы: 1
RSS
Подсчет значений в связанных таблицах DAX
 
День добрый,
Есть две таблицы. В первой отчет о продажах по товарам, клиентам, категориям клиентов и месяцам. Во второй указано количество магазинов у каждого клиента.
Предполагается, что отгрузка товара клиенту происходит во все его магазины.
Требуется в сводной таблице (или PowerBI) считать количество магазинов в разрезе товаров, категорий и месяцев.
Подскажите, пожалуйста, как можно реализовать.
Упрощенный пример в файле.
 
Доброе время суток
Цитата
Константин Кругляков написал:
считать количество магазинов
Вариант.
Код
=CALCULATE(SUM('Таблица2'[Количество магазинов]); 'Таблица1')
 
Спасибо. Как все просто, оказывается(
 
В продолжение работы над отчетом завис над следующей задачей(
Сделал расчет количества новых клиентов. Теперь надо получить количество новых магазинов.
Обновленный файл с примером прилагается.
Изменено: Константин Кругляков - 30.10.2020 15:19:45
 
Несколько костыльный вариант
Код
= Var beginDate = MIN('Таблица1'[Месяц])
Var previousDateFilter = FILTER(ALL('Таблица1'[Месяц]); 'Таблица1'[Месяц] < beginDate)
Return SUMX(VALUES('Таблица1'[Клиент]);
    Var test = CALCULATE(COUNTROWS('Таблица1'); previousDateFilter)
    Var curClient = CALCULATE(VALUES('Таблица1'[Клиент]))
    Return IF(ISBLANK(test); 
        CALCULATE(VALUES('Таблица2'[Количество магазинов]); 'Таблица2'[Клиент] = curClient);
        BLANK()
    )
)

Ещё вариант
Код
=Var beginDate = MIN('Таблица1'[Месяц])
Var previousDateFilter = FILTER(ALL('Таблица1'[Месяц]); 'Таблица1'[Месяц] < beginDate)
Var newClientsOnly = FILTER(VALUES('Таблица1'[Клиент]);
    Var test = CALCULATE(COUNTROWS('Таблица1'); previousDateFilter)
    Return ISBLANK(test)
)
Var newRowsOnly = CALCULATETABLE('Таблица1'; newClientsOnly)
Return CALCULATE(SUM('Таблица2'[Количество магазинов]); newRowsOnly)

И ещё один вариант
Код
=Var beginDate = MIN('Таблица1'[Месяц])
Var previousDateFilter = FILTER(ALL('Таблица1'[Месяц]); 'Таблица1'[Месяц] < beginDate)
Var thisClientsOnly = CALCULATETABLE('Таблица2'; 'Таблица1')
Return SUMX(thisClientsOnly;
    Var test = CALCULATE(COUNTROWS('Таблица1'); previousDateFilter)
    Return ISBLANK(test) * 'Таблица2'[Количество магазинов]
)
Изменено: Андрей VG - 31.10.2020 12:10:40
 
Огромное спасибо. Вариант 2 прекрасно работает. К тому же, скорректировав последнюю строку, получил объем продаж по новым клиентам)
Изменено: Константин Кругляков - 03.11.2020 12:50:33
Страницы: 1
Наверх