У меня есть эта проблема: с учетом «Движений» factTable , который содержит список транзакций склада.
Я хочу знать, сколько предметов поступило, сколько было отправлено (и этотривиально) но также сколько "В заказе" в определенное время (и это сложная часть)
Таким образом, каждая строка может быть либо квитанцией (она имеет положительныйзначение «qIn») или отгрузка (положительное значение qOut)
Например, очень простой список записей может быть:
ID Item TransactionDate OrderDate qIn qOut
1 A 2019-01-30 2019-01-10 5 0
2 A 2019-02-20 2019-01-15 3 0
3 A 2019-03-12 2019-01-20 0 6
4 A 2019-03-30 2019-02-20 20 0
Это означает:
На TransactionDate 2019-01-30 Товаров A поступило в количестве 5. Заказ на это был создан 2019-01-10: таким образом, за эти 20 дней было 5 заказанных товаров.Однако, когда я смотрю в конце января, я должен увидеть 0 для этой транзакции в «заказанном» показателе, потому что он прибыл 30 января.
Вместо этого для второй записи, в конце января Iдолжен видеть, что количество 3 было «в порядке», потому что фактическое прибытие было в 2019-02-20.
Таким образом, в конце строки в сводной таблице Excel должна отображаться ситуация, аналогичнаяна это:
Year 2019
Month January February March
IN | Ord IN | Ord IN | Ord
Item
A 5 3 3 20 20 0
Простая мера qIn:
qIN := SUM(Transactions[qtaIn])
Мера заказанного количества, которое я уже выяснил в данный момент (это ничего не делает!):
orderedQty :=
CALCULATE (
SUMX ( Transactions; Transactions[qIn] );
DATESBETWEEN (
Transactions[TransactionDate];
MINX ( Transactions; Transactions[OrderDate] );
MAXX ( Transactions; Transactions[TransactionDate] )
)
)
РЕДАКТИРОВАТЬ
Мера "InOrder" должна быть "аддитивной" в том смысле, что она должна учитывать не только то, что произошло втекущий месяц, но также , сколько InOrder из прошлых месяцев еще не получено.
С картиной (но это было бы нужно сделать ...) все было бы яснее, по крайней мере, с логической точки зрения.Однако, как и в случае с картиной, я не вижу, как извлечь из этой логики «прямые меры».
Вместо этого, используя меры, уже предоставленные @Olly, проблему можно переформулировать следующим образом:
InOrderFromOtherMonths := Sum (qIn) where Order Month <> Current Month
(то есть, сколько поступило в текущем месяце, полученном из заказов, принятых в прошлые месяцы)
InOrder := Total sum of (ORDER measure) - InOrderFromOtherMonths
PS.Я создал файл Excel с немного более интересным примером.
В этом файле, используя "картинку прямого измерения", значение InOrder
для января будет: ID 2 + ID 5 + ID 6
(заказы пока открыты в конце января).В значениях = 3 + 9 + 17 = 29
При «косвенной» мере было бы:
Total sum of ORDER = 15+23+12=50
InOrderFromOtherMonths = 6+15=21
InOrder = Total sum of ORDER - InOrderFromOtherMonths = 50 - 21 = **29**