我有表“销售”(字段:产品,国家,日期,销售)与许多产品和国家的月度销售。我也有日历的表,产品列表,与此表链接的国家列表。我想添加列到“销售”与运行总销售额在每个产品/国家,看到与期望的结果“运行总”字段。
我尝试使用YTD = TOTALYTD(SUM(SalesSales);CalendarDate),但它不起作用。我认为我需要在TOTALYTD函数中使用过滤器,但我也无法理解如何使用。你能为我的情况提出一个正确的解决方案吗?
发布于 2019-10-21 13:49:35
有人建议我使用下面的代码
列= SUMX (筛选器( Sales,SalesProduct =较早( SalesProduct ) && SalesCountry =较早( SalesCountry ) && SalesDate <=较早( SalesDate ) && YEAR ( SalesDate )=年份(较早( SalesDate ),SalesSales )
啊,真灵。
发布于 2019-10-18 15:28:54
我部分地解决了我的问题,为产品和国家/地区的每个组合创建了一组度量:
A_US = TOTALYTD(SUM(SalesSales);'Calendar'Date;FILTER(All(Sales);SalesProduct="A"&&SalesCountry="US"))
A_Canada = TOTALYTD(SUM(SalesSales);'Calendar'Date;FILTER(All(Sales);SalesProduct="A"&&SalesCountry="Canada"))
诸若此类。但是如果我有100种产品和30个国家呢?我想我需要在"Sales“中创建一个"Running total”列,用于计算每个产品和aech国家的运行总数。
发布于 2019-10-18 20:54:46
TOTALYTD函数的问题是它只需要一个过滤器。诀窍是像在第二个响应中一样使用filter函数。
要仅对所有产品和国家/地区使用一列,您必须获取当前行的上下文。要实现这一点,您可以在dax中使用前面的函数。
这里是关于前面的文档:https://docs.microsoft.com/en-us/dax/earlier-function-dax
需要使用以下表达式构建该列:
TOTALYTD(SUM(SalesSales),‘Calendar’‘Date,filter(Sales,and(SalesCountry=EARLIER(salesCountry),salesProduct =EARLIER(SalesProduct)
https://stackoverflow.com/questions/58445353
复制相似问题