MDX多重过滤器

时间:2017-09-08 20:15:29

标签: ssas mdx

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(存在..)和非空的组合,但没有运气...

1 个答案:

答案 0 :(得分:0)

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

<script type="text/javascript" src="script.js" defer></script>

每个产品30天的销售任务都可以通过MDX实现,但它们是大尺寸的性能杀手。 SQL Server由于其并发性质而做得更好。同时,MDX并不擅长像这样的大量计算。所以我甚至没有提供代码。