Условная сумма многомерных выражений

У меня есть таблица движения запасов с 4 столбцами - SKUID, productID, dateIn, dateOut и сумма. Я хочу иметь возможность отслеживать уровни запасов с течением времени, т.е. на каждую дату в заданном диапазоне, каков был уровень запасов данного продукта - например.

(Источник данных)

SKUID, productID, dateIn, dateOut, amount
100001, 5, 10/01/2014, 15/01/2014, 500
100002, 5, 10/01/2014, 15/01/2014, 1000
100003, 5, 20/01/2014, 31/12/2049, 500
100004, 5, 20/01/2014, 20/01/2014, 100

(данные отчета)

productID, date, amount
5, 10/01/2014, 1500
5, 11/01/2014, 1500
5, 11/01/2014, 1500
...
5, 15/01/2014, 0
5, 15/01/2014, 0
...
5, 20/01/2014, 500
5, 21/01/2014, 500

Для каждого дня в окончательном отчете я хочу видеть сумму суммы для каждого продукта, где dateIn равно ‹= reportDate, а dateOut равно >= reportDate.

Я думаю, что это должно быть сделано как некая условная сумма, т.е. создать вычисляемую меру следующим образом:

sum({null:[dateIn].[Date].CurrentMember}, iif([StockMovement].[dateOut] >= [dateIn].[Date].CurrentMember, [Measures].[Amount], 0))

это не работает - это просто дает мне сумму суммы для каждой даты.


person Chris Durham    schedule 15.09.2014    source источник


Ответы (1)


Вы не должны этого делать. Даже если вы можете, это не очень хорошая идея.

В таблице, которую вы описываете, есть зерно, которое можно более или менее идентифицировать как «поставки», где каждая поставка неделима. Хорошо, это дает вам такие показатели, как «количество дней на отгрузку», или «сумма, поступающая на дату X», или «сумма, уходящая на день X».

Если вы хотите отслеживать запасы, вам следует использовать таблицу фактов моментальных снимков, где на каждый день вы добавляете 1 запись для каждого продукта с количеством, которое в настоящее время находится на складе. Итак, для каждого дня вы берете уровень запасов за предыдущий день, добавляете все суммы, вычитаете все суммы и сохраняете их в таблице запасов.

Ознакомьтесь с набором инструментов Data Warehouse Toolkit Ральфа Кимбалла, загляните в главу Inventory, где он описывает таблицы фактов моментальных снимков и зачем они нам нужны. Он довольно хорошо объясняет, как ваш подход может иметь нежелательные последствия.

person nsousa    schedule 16.09.2014