我有这个问题: 给定一个“运动” 事实表,其中包含仓库交易的列表。
我想知道有多少物品到达了,有多少运了(这是微不足道的),而且还想知道在特定时间有多少“处于订单状态” (这是困难的部分)
因此,每行可以是收据(其“ 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月底观看时,由于“交易”已于1月30日到达,因此应该以“有序”量度看到该交易为0。
相反,对于第二个记录,在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] )
)
)
EDIT
“ InOrder”度量应为“加性”,因为它不仅应考虑当月发生的情况,而且还应考虑过去几个月中有多少InOrder 尚未收到。
有了图片(但这是要做的...),至少从逻辑角度看,整个事情会更清楚。但是,也有一张图片,我看不到如何从该逻辑中提取“直接测量”。
相反,利用@Olly已提供的措施,可以将问题重新表示为:
InOrderFromOtherMonths := Sum (qIn) where Order Month <> Current Month
(即,在过去一个月中收到的订单中,当月有多少到达)
InOrder := Total sum of (ORDER measure) - InOrderFromOtherMonths
PS。
我创建了an Excel文件,并提供了一些更有趣的示例。
在该文件中,使用“直接测量图”,一月份的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**
答案 0 :(得分:1)
创建一个包含YYYY-MM
字段的Calendar表。如果您还没有日历表,则可以在PowerPivot中自动创建一个日历表:Design > Date Table > New
在Calendar[Date]
和Transactions[TransactionDate]
之间创建活动关系
在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
)
)
)
现在在您的数据透视图中使用这三种方法:
或更明确地说:
有关XLSX文件的信息,请参见https://excel.solutions/so_55596609-2/