我需要基于两个库存位置,并且从每个产品的最大值开始计算预测金额的累计总额(由于库存位置,产品编号重复)。例如,产品“ 1”应该用于一次总计。
我的第一个代码,没有根据项目编号独立地得出相同的预测金额。
RunningTotal1 =
VAR
CurrentAmount= Listing[Forecast Amount]
RETURN
SUMX (
FILTER (
Listing;
Listing[Forecast Amount]>= CurrentAmount);
Listing[Forecast Amount])
我的第二个代码中,运行总计是基于库存位置的,它独立地为每个位置计算的总和仍然不是基于物料编号来独立地得出相同的预测金额。
RunningTotal2 =
VAR CurrentAmount = Listing[Forecast Amount]
VAR Location = Listing[Stock Location]
RETURN
SUMX (
FILTER (
Listing;
Listing[Stock Location] = Location &&
Listing[Forecast Amount]>= CurrentAmount);
Listing[Forecast Amount])
但是当我在公式中添加第二个位置时,会出现错误。
“ DAX比较操作不支持将Text类型的值与True / False类型的值进行比较。考虑使用VALUE或FORMAT函数来转换值之一。”
RunningTotal3 =
VAR CurrentAmount = Listing[Forecast Amount]
VAR LocationW = Listing[Stock Location] = "Warehouse"
VAR LocationT = Listing[Stock Location] = "Total Stock"
RETURN
SUMX (
FILTER (
Listing;
Listing[Stock Location] = LocationW ||
Listing[Stock Location] = LocationT &&
Listing[Forecast Amount]>= CurrentAmount);
Listing[Forecast Amount])
我期望的是
你好@RADO,
我尝试添加作为度量,但无法成功,因此我将其添加为新列。我意识到我的代码是错误的,在您的图片项目5和6中编号不同。我的公式是
Forecast Index = RANKX(Listing;Listing[Forecast Amount])
这是结果Forecast Index
致谢
答案 0 :(得分:0)
您需要在“列表”表中添加一列,以定义运行总计的顺序。您不能为此使用“预测金额”,因为在某些情况下,不同物料的金额相同(例如,物料66和99),并且无法解决这些联系(哪些物料应首先累加-66或99吗?
通常将日期/时间字段用于此目的,但是如果您没有日期/时间字段,则可以根据所需的任何规则添加索引。对于此示例,我手动添加了“预测索引”,如下所示:
这里的预测索引只是一个排序顺序-如果按其排序,您将获得与“所需结果”表完全匹配的布局。
然后,创建一个度量:
RT Expected =
VAR Current_Index = MAX ( Listing[Forecast Index] )
VAR Summary_Table =
SUMMARIZE (
FILTER (
ALL ( Listing ),
Listing[Forecast Index] <= Current_Index &&
Listing[Stock Location] <> "Without Stock" ),
Listing[Item No],
Listing[Forecast Amount] )
RETURN
SUMX ( Summary_Table, Listing[Forecast Amount] )
结果:
注意:如果您不想看到第2项和第4项,只需将它们从视觉过滤器中删除即可。
工作原理:
编辑:
您可以使用PowerQuery创建适当的索引:
如果这些说明不清楚,请参阅本文:
https://www.excelguru.ca/blog/2018/06/14/ranking-method-choices-in-power-query/