问题描述
我遇到循环依赖的情况。
我正在尝试计算在某个日期之前将到达仓库的库存,但是eta_date是计算得出的日期列。
报告问题的公式是这样:
SIT Arriving Soon =
VAR PastDate = Today() - 40
VAR FutureDate = TODAY() + 14
return
CALculaTE(SUMX(Onorder,Onorder[Open ASN qty [units]]]),DATESBETWEEN(Onorder[ETA Date],PastDate,FutureDate)
)
问题在于,datesweenween函数需要一列来引用,而我的列是下面的计算列,该列仅引用“ onorder”表中的其他列:
要了解此公式,这是一个小键: 如果数量在运输中,则InT为true / false 打开的ASN数量=运送中的数量 然后,我查看了不同的供应商以及用于增加运输时间天数的运输方式。 然后,我进行计算以将运输时间添加到“按供应商开具发票”日期,如果供应商不是定义的供应商之一,则我们使用默认的计算日期“ Onorder [Target VSL3 Date]”
ETA Date =
Var InT = if ( Onorder[Open ASN qty [units]]] <> 0,1,0)
Var AAvend = if( Onorder[vendor] = "451633" ||
Onorder[vendor] = "97051583"||
Onorder[vendor] = "452825","AA","Non-AA")
Var AATransTime = if( AAvend = "AA",IF(Onorder[Ship Mode] = "Blitz",5,IF(Onorder[Ship Mode] = "Air",14,42)),500)
var TransTime = IF(AATransTime > 0,AATransTime,99999)
RETURN
if ( InT = 1,DATEADD(Onorder[Ship Date].[Date],TransTime,DAY),Onorder[Target VSL3 Date]. [Date])
任何人都可以帮助我解决此问题,或就如何计算此问题提供建议吗? 非常感谢!
解决方法
抛弃DATESBETWEEN,然后在日期列上进行过滤:
SIT Arriving Soon =
VAR PastDate = Today() - 40
VAR FutureDate = TODAY() + 14
return
CALCULATE(SUM(OnOrder[Open ASN qty [units]]]),OnOrder[ETA Date] >= PastDate && OnOrder[ETA Date] <=FutureDate)
)
,
感谢您的回复。我尝试了公式,但仍然收到循环引用错误。它讨论了“ ADC发票编号”字段。这是该代码:
ADC Invoice No =
CALCULATE ( FIRSTNONBLANK ( 'ADC Movements'[ADC Invoice Number],1 ),FILTER ( ALL ( 'ADC Movements' ),'ADC Movements'[PoFull] = OnOrder[PoFull] ) )
我完全看不出这种冲突。