MDX 多重过滤器

MDX multiple filters

20 岁 SQL 专业人士,MDX 新手。

试图创建一个度量来获得产品发布后 30、60、90 天等的销售额,但我想排除不完整的时间段。这是 sql:

select ProductName, sum(sales) '60DaySales' 
from dimProduct p join factSales s on p.productkey = s.productkey
  join dimCalendar c on s.orderDateKey = c.CalendarKey
   where datediff(dd,p.LaunchDate,c.Date) between 31 and 62
   and exists (select 1 from sales etc... where date >= 62 days)

基本上我只想为销售超过 62 天的产品显示“60DaySales”。

我有这个 MDX,可以获取时间段:

sum(
  filter(
    [Sales].[Days Since Launch].members
   ,sales.[Days Since Launch].membervalue > 30 AND 
        sales.[Days Since Launch].membervalue < 63
  )
,[Measures].[SalesBase]
)

但我不确定如何排除超过 62 天没有销售的商品。我尝试了 iif(exists..) 和 nonempty 的一些组合,但没有成功...

我会添加额外的列而不是计算的度量。我有类似的任务(销售 30、60、90 天,但从客户的第一个销售日期算起)。最好的方法是在销售指标中添加一列 table:

sales30 = iif(dateadd(day,30,p.LaunchDate) >= c.Date, sales, null),
sales60 = iif(dateadd(day,60,p.LaunchDate) >= c.Date, sales, null),
sales90 = iif(dateadd(day,90,p.LaunchDate) >= c.Date, sales, null)

像每件产品销售 30 天这样的任务可以通过 MDX 完成,但它们是大维度的性能杀手。 SQL 服务器由于其并发特性而做得更好。同时,MDX 不擅长这些繁重的计算。所以我什至不提供代码。