Powerbi 用于多个事务的SUMX()中的DAX-TOPN()
我需要你的帮助 我试图制作一个计算列,对每种产品的前两个日期的销售额进行合计(并非所有日期都有销售额!) 我已尝试使用计算:Powerbi 用于多个事务的SUMX()中的DAX-TOPN(),powerbi,dax,calculated-columns,Powerbi,Dax,Calculated Columns,我需要你的帮助 我试图制作一个计算列,对每种产品的前两个日期的销售额进行合计(并非所有日期都有销售额!) 我已尝试使用计算: CALCULATE ( SUMX ( TOPN ( 2; 'Table'; 'Table'[date_ID] ); 'Table'[Sale] ); ALLEXCEPT ( Table; 'Table'[Product_ID] ) ) Calculated Column 1 = VAR SumProd = CALCULATE (
CALCULATE (
SUMX ( TOPN ( 2; 'Table'; 'Table'[date_ID] ); 'Table'[Sale] );
ALLEXCEPT ( Table; '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] )
)
但这只适用于每个产品ID每个日期有一次销售的情况
如果每个日期和产品ID有许多事务,我该怎么办
下面我有一个表格,其中我(过滤)了一个日期和一个产品
现在,我已经创建了一个计算列,它对每个日期和产品ID的所有事务进行汇总(供参考)。
这是
Calculated Column 2 =
CALCULATE (
SUMX ( Table; Table[Sale] );
ALLEXCEPT ( Table; 'Table'[Date]; 'Table'[Product_ID] )
)
现在是困难的部分。
如果我想对每个产品的最后两个日期的交易进行合计,我已经进行了以下计算:
CALCULATE (
SUMX ( TOPN ( 2; 'Table'; 'Table'[date_ID] ); 'Table'[Sale] );
ALLEXCEPT ( Table; '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] )
)
问题是:
“计算列1”=7571200
,这是27040*交易数量?我只想要27040的值
N_值=2
更改为N_值=3
,计算不会更改吗李>
请问,有人知道我的计算有什么问题吗
谢谢
比尔,
Jakob在您的度量中,
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\u ID
关联的前两个日期的列表,并将其存储为变量。然后,我们在计算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
)
在您的度量中,
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\u ID
关联的前两个日期的列表,并将其存储为变量。然后,我们在计算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
)
感谢Alexis,它看起来很棒,但我一直在为变量获取此错误,我无法找出错误的地方:“表达式引用了多列。多列无法转换为标量值”。看起来它希望在第三个
TOPN
参数中使用值而不是列。请试试我的编辑,亚历克西斯!谢谢。它完全符合我的要求。非常感谢您的解决方案。祝你周末愉快。谢谢Alexis,它看起来很棒,但我一直收到变量的这个错误,我不知道它出了什么问题:“表达式引用了多列。多列不能转换为标量值”。看起来它需要的是一个值,而不是第三个TOPN
参数中的一列。请试试我的编辑,亚历克西斯!谢谢。它完全符合我的要求。非常感谢您的解决方案。有一个愉快的周末。