Как суммировать типы товаров в одной накладной, чтобы найти проценты в DAX

#powerbi #dax #ssas-tabular

#powerbi #dax #ssas-табличный

Вопрос:

В накладной есть несколько товаров, включая товар со скидкой. Как мне найти скидку в% для всего счета-фактуры, а затем использовать ее для расчета скорректированных долларов для каждого товара?

Я могу найти проценты для каждого счета-фактуры, используя summary и sumx, но я не могу довести его до уровня товара.

Это то, что у меня есть в настоящее время в моей таблице фактов:

 Invoice Type        Item            Dollars
11111   Shipment    pancake         50
11111   Shipment    waffle          200
11111   Discount    discount item   20
11111   Discount    discount item   30
  

Это то, что я хочу создать:

 item    dollars discount %  adjusted dollars
pancake 50      0.2         40
waffle  200     0.2         160
  

Вот шаги, которые я пытаюсь выполнить:

  1. Суммируйте доллары для каждого типа
    • Отгрузка = 250
    • Скидка = 50
  2. Найдите скидку %
    • Скидка / отгрузка = 20%
  3. Используйте этот% скидки для корректировки суммы в долларах для каждого товара.
    • скорректированный блин = 50 * (1 — 0.2) = 40
    • скорректированный waffle = 200 * (1 — 0.2) = 160
  4. Сложите эти скорректированные доллары в меру.

Идея в том, что я мог бы затем поместить либо товары, либо счета в столбцы сводной таблицы и получить показатель, который даст мне скорректированную сумму в долларах. Я смог сделать это только для счетов-фактур, но я не могу понять, как это сделать на уровне товара.

Любая помощь будет оценена.

Ответ №1:

Добавьте следующие меры

Сумма отгрузки:

 Shipment Amount = 
    CALCULATE ( 
        SUM ( FactTable[Dollars] ),
        FactTable[Type] = "Shipment"
    )
  

Скидка по счету %:

 Invoice Discount % = 
VAR InvoiceShipment = 
    CALCULATE ( 
        SUM ( FactTable[Dollars] ),
        FILTER ( 
            ALLEXCEPT ( FactTable, FactTable[Invoice] ), 
            FactTable[Type] = "Shipment"
        )
    )
VAR InvoiceDiscount = 
    CALCULATE ( 
        SUM ( FactTable[Dollars] ),
        FILTER ( 
            ALLEXCEPT ( FactTable, FactTable[Invoice] ), 
            FactTable[Type] = "Discount"
        )
    )
RETURN
    DIVIDE ( 
        InvoiceDiscount, 
        InvoiceShipment, 
        BLANK()
    )
  

Скорректированная сумма:

 Adjusted Amount = 
    SUMX ( 
        FactTable,
        [Shipment Amount] * ( 1 - [Invoice Discount %] )
    )
  

Теперь вы можете использовать их в своей визуализации по мере необходимости.

введите описание изображения здесь

См. https://pwrbi.com/so_55602327 / например, файл PBIX