我有一个“销售”表(字段:“产品”,“国家/地区”,“日期”,“销售”),其中包含许多产品和国家/地区的每月销售额。我也有带有日历的表,产品列表,与此表链接的县列表。我想在“销售”中添加列,其中包含每个产品/国家/地区的销售总额,请查看具有所需结果“销售总额”的字段。
我尝试使用 YTD = TOTALYTD(SUM(Sales [Sales]); Calendar [Date]),但无效。我认为我需要在TOTALYTD函数中使用过滤器,但是我也没有设法理解它。您能建议我解决我的情况的正确方法吗?
答案 0 :(得分:1)
建议我使用此代码
列= SUMX( 过滤器( 销售, 销售[产品] =早期(销售[产品]) && Sales [Country] = EARLIER(Sales [Country]) && Sales [Date] <= EARLIER(Sales [Date]) &&年(销售[日期])=年(早(销售[日期])) ), 销售[销售] )
有效。
答案 1 :(得分:0)
我针对产品和国家/地区的每种组合制定了一套衡量标准来部分解决我的问题:
A_US = TOTALYTD(SUM(Sales [Sales]);'Calendar'[Date]; FILTER(All(Sales); Sales [Product] =“ A” && Sales [Country] =“ US”))
A_Canada = TOTALYTD(SUM(Sales [Sales]);'Calendar'[Date]; FILTER(All(Sales); Sales [Product] =“ A” && Sales [Country] =“ Canada”))
,依此类推。但是,如果我在30个国家/地区拥有100种产品,该怎么办?我想我需要在“销售”中创建一列“运行总金额”,以计算每种产品和aech国家/地区的运行总金额。
答案 2 :(得分:0)
TOTALYTD函数的问题在于它仅需要一个过滤器。 技巧是像在第二个响应中一样使用过滤器功能。
要仅对所有产品和国家/地区使用一列,则必须获取当前行的上下文。 为此,您可以在dax中更早地使用该功能。
有关早期文档:https://docs.microsoft.com/en-us/dax/earlier-function-dax
该列需要使用以下表达式构建:
TOTALYTD(SUM(Sales [Sales]),'Calendar'[Date],filter(Sales,and(Sales [Country] = EARLIER(sales [Country]),sales [Product] = EARLIER(sales [Product] ))))