Сначала я создал StockTable, где мы объединили покупки и продажи:
StockTable =
UNION(
ADDCOLUMNS(Purch;"Event";"Purchage") ;
SELECTCOLUMNS(Sold;"Article";Sold[Article];"PurchageDate";Sold[SalesDate];"Amount";-Sold[Amount];"Event";"Sold")
)
Поскольку нам нужно убедиться, что реляционная модель верна, я добавил новое отношение из Invent в StockTable 1: *
Далее я добавил столбец Stock в StockTable, это вычисляет по отношению к дате инвентаризации товара в акции на конкретную дату.Он имеет записи только тогда, когда произошло реальное изменение (365 дней не требуется).
Stock =
var lastStockDate = RELATED(Invent[Date])
return if (StockTable[PurchageDate] < lastStockDate;
RELATED(Invent[Amount in inventory]) + CALCULATE(SUM(StockTable[Amount]); FILTER(StockTable;StockTable[Article] = EARLIER(StockTable[Article]) && StockTable[PurchageDate] >= EARLIER(StockTable[PurchageDate]) && StockTable[PurchageDate] <= lastStockDate)) ;
CALCULATE(SUM(StockTable[Amount]); FILTER(StockTable;StockTable[Article] = EARLIER(StockTable[Article]) && StockTable[PurchageDate] <= EARLIER(StockTable[PurchageDate]) && StockTable[PurchageDate] > lastStockDate)) + RELATED(Invent[Amount in inventory]))
Теперь можно создать график, показывающий запас по статье: