我有这个问题:给出一个“Movements”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个数量的项目A“已订购”。但是,当我在1月底观看时,我应该在“有序”措施中看到0,因为它在1月30日到达。
相反,对于第二个记录,在1月底,我应该看到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。我用一个更有趣的例子创建了an Excel文件。
在该文件中,使用“直接测量图片”1月份的InOrder
将是:ID 2 + ID 5 + ID 6
(订单尚未在1月底开放)。在值= 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**
创建一个Calendar表,包括YYYY-MM
字段。如果您还没有日历表,可以在PowerPivot中自动创建一个:Design > Date Table > New
在Calendar[Date]
和Transactions[TransactionDate]
之间创建一个ACTIVE关系
在Calendar[Date]
和Transactions[OrderDate]
之间创建一个非活动关系
现在创建您的措施:
测量IN:
IN:=SUM ( Transactions[qIn] )
测量订单:
ORDERS:=
CALCULATE (
SUM ( Transactions[qIn] ),
USERELATIONSHIP ( 'Calendar'[Date], Transactions[OrderDate] )
)
测量顺序:
ORDER:=
IF (
HASONEVALUE ( 'Calendar'[YYYY-MM] ),
CALCULATE (
[ORDERS],
FORMAT ( Transactions[TransactionDate], "YYYY-MM" ) <> VALUES ( 'Calendar'[YYYY-MM] )
)
)
并适应:
在您的问题编辑之后,我发现您的一些标签令人困惑 - 但尝试创建以下措施:
措施:有序
Ordered:=
CALCULATE (
SUM ( Movements[qIn] ),
USERELATIONSHIP ( 'Calendar'[Date], Movements[OrdDate] )
)
措施:收到
Received:= SUM ( Movements[qIn] )
措施:出色
Outstanding:=
VAR EOMaxDate =
EOMONTH ( LASTDATE ( 'Calendar'[Date] ), 0 )
RETURN
IF (
ISBLANK ( [Ordered] ) && ISBLANK ( [Received] ),
BLANK(),
CALCULATE (
[Ordered] - [Received],
FILTER (
ALL ( 'Calendar'),
'Calendar'[Date] <= EOMaxDate
)
)
)
现在在您的支点中使用这三个度量:
或者,更清楚地说:
请参阅https://excel.solutions/so_55596609-2/,例如XLSX文件