繁体   English   中英

使用DistinctCount的MDX查询,除了作为过滤器

[英]MDX Query using DistinctCount, Except as a filter

我是MDX查询的新手,正在尝试创建一个使用Except的查询。 我目前有一个在使用一堆OR进行过滤时可以正常工作的方法,但是速度非常慢。

我想做的是计数不同的延期交货行(不等于0),除非设置了2个老化代码。 050060 )。

该查询似乎可以工作,但是非常慢(不使用except)

DISTINCTCOUNT(filter([Product].[Segment - Line - Types].[Product].members,  
  (([Measures].[BackOrderLineCount], [Aging].[AgingCode].[Aging].&[005] ) OR  
  ([Measures].[BackOrderLineCount], [Aging].[AgingCode].[Aging].&[010] )OR  
  ([Measures].[BackOrderLineCount], [Aging].[AgingCode].[Aging].&[020] )OR 
  ([Measures].[BackOrderLineCount], [Aging].[AgingCode].[Aging].&[030] )OR  
  ([Measures].[BackOrderLineCount], [Aging].[AgingCode].[Aging].&[040] ))))

我希望如果将其切换为“ EXCEPT”,它将加快速度...

任何帮助将不胜感激,我一直在寻找这一天。

您实际上不需要为此使用FILTER函数。 另外,减号运算符与EXCEPT一样好,但更方便。 您应该看一下具有延期交货价的产品和老化代码的元组。

DISTINCTCOUNT([Product].[Segment - Line - Types].[Product].members * 
NonEmpty(
([Aging].[AgingCode].[Aging].CHILDREN - {[Aging].[AgingCode].[Aging].&[50], [Aging].[AgingCode].[Aging].&[60]}), 
[Measures].[BackOrderLineCount])
)

NonEmpty函数返回具有回订单行老化的那些代码。

如果必须使用EXCEPT ,则代码如下所示:

EXCEPT
(
[Aging].[AgingCode].[Aging].CHILDREN,  {[Aging].[AgingCode].[Aging].&[50], [Aging].[AgingCode].[Aging].&[60]}
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM