我有一个包含4列的库存移动表 - SKUID,productID,dateIn,dateOut和amount。我希望能够随时间跟踪库存水平,即在给定范围内的每个日期跟踪给定产品ID的库存水平 - 例如
(来源数据)
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 ))
这不起作用 - 它只是给我每个日期的金额总和
答案 0 :(得分:1)
你不应该这样做。即使你可以,也不是一个好主意。
您描述的表格中可以或多或少地标识为“货件”,每批货物都是不可分割的。好的,这会给你一些措施,比如“每次发货的天数”,或“日期X上的金额”或“第X天的金额”。
如果您想跟踪库存,则应使用快照事实表,每天您为每个产品添加1条记录以及当前库存量。因此,对于每一天,您采用前一天的库存水平,添加所有金额,减去所有金额并将其存储在库存表中。
检查Ralph Kimball的数据仓库工具包,查看库存章节,其中描述了快照事实表以及我们需要它们的原因。他很好地解释了你的方法如何产生不良影响。