Ssas MDX多重过滤器

Ssas MDX多重过滤器,ssas,mdx,Ssas,Mdx,20年的SQL pro,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 wh

20年的SQL pro,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天的产品的“60天销售”

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

sum(
  filter(
    [Sales].[Days Since Launch].members
   ,sales.[Days Since Launch].membervalue > 30 AND 
        sales.[Days Since Launch].membervalue < 63
  )
,[Measures].[SalesBase]
)
sum(
滤器(
[销售][自发布之日起的天数].会员
,销售额。[发布后天数]。membervalue>30和
销售额。[发布后天数]。成员价值<63
)
,[Measures]。[SalesBase]
)

但我不知道如何排除超过62天没有销售的商品。我尝试了一些iif(exists…)和nonempty但没有运气的组合…

我会添加额外的列,而不是计算的度量值。我有一个类似的任务(销售30,60,90天,但从客户的第一个销售日期开始)。最好的方法是向sale measure表中添加列:

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)

通过MDX,每种产品30天的销售等任务是可以完成的,但它们是大尺寸的性能杀手。SQL Server由于其并发性而做得更好。同时,MDX不擅长这种繁重的计算。因此,我甚至没有提供代码。

我会添加额外的列,而不是计算出的度量值。我有一个类似的任务(销售30,60,90天,但从客户的第一个销售日期开始)。最好的方法是向sale measure表中添加列:

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)

通过MDX,每种产品30天的销售等任务是可以完成的,但它们是大尺寸的性能杀手。SQL Server由于其并发性而做得更好。同时,MDX不擅长这种繁重的计算。因此,我甚至没有提供代码。

感谢您的洞察力,我相信我会这样做的。我以前想过这样做,但我觉得这有点逃避,因为我刚刚开始使用MDX,但我想让事情变得比应该的更难是没有意义的。谢谢你的洞察力,我相信我会这么做的。我以前想过这样做,但我觉得这有点逃避,因为我刚刚开始使用MDX,但我想让事情变得比应该的更难是没有意义的。