我需要你的帮助。
我正在尝试创建一个计算列,以求和每种产品最近两个日期的销售额(所有日期均无销售额!)。
我尝试使用该计算:
CALCULATE (
SUMX ( TOPN ( 2; 'Table'; 'Table'[date_ID] ); 'Table'[Sale] );
ALLEXCEPT ( Table; 'Table'[Product_ID] )
)
但这仅适用于每个日期每个产品ID都有一笔销售的情况。
如果每个日期和商品ID都有很多交易,该怎么办?
下面我有一张表格,其中有(过滤)一个日期和一种产品。
现在,我创建了一个计算列,该列汇总了每个日期和产品ID的所有交易(以供参考)。 这是
Calculated Column 2 =
CALCULATE (
SUMX ( Table; Table[Sale] );
ALLEXCEPT ( Table; 'Table'[Date]; 'Table'[Product_ID] )
)
现在是困难的部分。 如果要对每种产品的最后两个日期的交易进行汇总,请进行以下计算:
Calculated Column 1 =
VAR SumProd =
CALCULATE (
SUMX ( Table; Table[Sale] );
ALLEXCEPT ( Table; Table[Date]; Table[Product_ID] )
)
RETURN
CALCULATE (
SUMX ( TOPN ( 2; 'Table'; 'Table'[Date] ); SumProd );
ALLEXCEPT ( Table; Table[Product_ID]; Table[Date] )
)
问题:
示例:在表中,您看到"Calculated column 1"=7571200
,即27040 *交易数量?我只想要值27040。
N_Value=2
更改为N_Value=3
,计算不会改变吗? 请,有人知道我的计算出了什么问题吗?
谢谢。
Br, 雅各布
答案 0 :(得分:0)
根据您的度量,SumProd
是您要为表中的每一行求和的常数。这不是你想要的。
我建议更像这样的东西:
Calculated Column 1 =
VAR LastTwoDates =
CALCULATETABLE (
VALUES ( Table[Date] );
TOPN ( 2; ALLEXCEPT ( Table; Table[Product_ID] ); Table[Date] )
)
RETURN
CALCULATE (
SUM ( Table[Sale] );
ALLEXCEPT ( Table; Table[Product_ID] );
Table[Date] IN LastTwoDates
)
在此,我们首先计算与Product_ID
关联的前2个日期的列表,并将其存储为变量。然后,在计算Sale
的总和时,将其用作过滤器。
我不太肯定这种确切的语法会起作用,但是我希望它会为您指明一个更好的方向。
事实证明,我的代码未按预期工作。尝试以下方法:
Calculated Column 1 =
VAR ProductDates =
CALCULATETABLE (
VALUES ( Table1[Date] );
ALLEXCEPT ( Table1; Table1[Product_ID] )
)
VAR LastTwoDates = TOPN ( 2; ProductDates; [Date] )
RETURN
CALCULATE (
SUM ( Table1[Sale] );
ALLEXCEPT ( Table1; Table1[Product_ID] );
Table1[Date] IN LastTwoDates
)