Powerbi 基于其他列值运行总计

Powerbi 基于其他列值运行总计,powerbi,dax,powerbi-desktop,Powerbi,Dax,Powerbi Desktop,我需要从最大值开始计算预测金额的运行总数,基于两个库存位置,每个产品一次(由于库存位置,产品编号重复)。e、 g产品“1”应使用一次,用于运行总计 我的第一个代码,它没有根据项目编号单独计算相同的预测金额 我的第二个代码,其中运行总计是基于库存位置的,它独立地计算每个位置,但仍然没有根据物料编号独立地求和相同的预测金额 但当我在公式中添加第二个位置时,它给出了一个错误 比较操作不支持将Type文本的值与Trror Trale/false类型的值进行比较。请考虑使用值或Frand函数来转换其中

我需要从最大值开始计算预测金额的运行总数,基于两个库存位置,每个产品一次(由于库存位置,产品编号重复)。e、 g产品“1”应使用一次,用于运行总计

我的第一个代码,它没有根据项目编号单独计算相同的预测金额

我的第二个代码,其中运行总计是基于库存位置的,它独立地计算每个位置,但仍然没有根据物料编号独立地求和相同的预测金额

但当我在公式中添加第二个位置时,它给出了一个错误

比较操作不支持将Type文本的值与Trror Trale/false类型的值进行比较。请考虑使用值或Frand函数来转换其中的一个值。 我所期望的是

你好@RADO

我试图添加为度量值,但未能成功,因此我添加了一个新列。我意识到我的代码是错误的,在你的图片项目5和6有不同的数字。我的公式是

Forecast Index = RANKX(Listing;Listing[Forecast Amount])
这是结果


关于

您需要在“列表”表中添加一列,用于定义运行总数的顺序。您不能使用Forecast Amount(预测金额),因为在某些情况下,不同的项目具有相同的金额(例如,项目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] )
RT预期=
VAR Current_Index=MAX(列表[预测指数])
VAR汇总表=
总结(
滤器(
全部(列表),

列出[Forecast Index]我建议你重新表述你的问题,写得更简单、更清楚。此外,为了增加获得答案的机会,你可以陈述当前的情况和预期的结果。我相信会有人向你解释如何从最初的情况过渡到最终的目标:)你好@Seymour谢谢你的帮助。我希望现在事情很简单:)你好@RADO,谢谢你的帮助。正如您所说,我创建了一个排名列Forecast Index=RANKX(列表;列表[Forecast Amount]),但当我添加您的度量值时,它会显示每个单元格的总计。e、 每行g 57。您是将其添加为度量值还是列?另外,我认为RANKX在这里帮不了你。请发布一张带有索引的数据图像,以确认其工作正常。你好@RADO,我更新了我的问题。请找出以上我的答案。regards@coolidge-这里有两个问题。1) 索引必须作为列添加到数据表中,而不是作为矩阵中的度量。2) RANKX没有帮助,因为它不能解决关系(如第5项和第6项)。如果您可以在数据源处添加索引,这将是一个理想的选择-即,如果您要导入Excel文件,请将其添加到那里(只是一个行号);如果从数据库导入,请查看是否有记录ID或时间戳。或者,您也可以在PowerQuery中执行此操作—发布另一个关于此操作的问题。如果可以,我将按照您所说的向导入的文件添加索引。谢谢你的帮助和详细的回答。祝您有个美好的一天。
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])
Forecast Index = RANKX(Listing;Listing[Forecast Amount])
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] )