Optimization 使用DistinctCount的MDX查询,但作为筛选器除外

Optimization 使用DistinctCount的MDX查询,但作为筛选器除外,optimization,ssas,distinct,mdx,Optimization,Ssas,Distinct,Mdx,我不熟悉MDX查询,正在尝试创建一个利用Except的查询。我现在有一个,当我用一堆OR做一个过滤器时,它可以工作,但是速度非常慢 我想做的是计算不同的延期订单行(其中不等于0),除非设置了2个账龄代码。(050和060) 此查询似乎有效,但速度非常慢(不使用except) 我希望如果我把它换成“除了”,它会加快速度 如果您有任何帮助,我将不胜感激。我已经搜索了一整天了。您不需要使用过滤器来满足此要求。此外,减号运算符与一样好,只是更方便。 您应该查看获取产品元组和账龄代码,这些元组和账龄代码具

我不熟悉MDX查询,正在尝试创建一个利用Except的查询。我现在有一个,当我用一堆OR做一个过滤器时,它可以工作,但是速度非常慢

我想做的是计算不同的延期订单行(其中不等于0),除非设置了2个账龄代码。(
050
060

此查询似乎有效,但速度非常慢(不使用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
(
[Aging].[AgingCode].[Aging].CHILDREN,  {[Aging].[AgingCode].[Aging].&[50], [Aging].[AgingCode].[Aging].&[60]}
)

我不想要老化代码050和060,所以我想说“不等于…”谢谢Sourav_Agasti,我尝试了顶部的“DistinctCount”示例,但得到的“the Syntax for')是不正确的。“所以我想知道为什么。另外,在我学习MDX的过程中,你有没有可能对我有帮助的网页?那是个打字错误。编辑了我的答案。如果您真的很想学习MDX,我建议您在系统中设置AdventureWorksCube。然后打开一个新的MDX查询窗口,并尽可能多地使用MDX函数。试试谷歌搜索“MDX函数引用”。如果您是一个完全的初学者,请浏览现有的代码并尝试理解它在做什么。这种实际学习语言的方法总是比阅读100页要好。给自己几个月的时间,一旦你对语言有点熟悉,试着浏览Chris Webb的博客。也试着通过这个网站并为之贡献力量。它创造了奇迹。
EXCEPT
(
[Aging].[AgingCode].[Aging].CHILDREN,  {[Aging].[AgingCode].[Aging].&[50], [Aging].[AgingCode].[Aging].&[60]}
)