MDX多个条件在多个维度上进行过滤

时间:2019-10-24 17:07:16

标签: mdx cube

我对MDX相对较新,大约一个月左右,现在我正在针对一个我也使用的远程多维数据集(Java 8 ActivePivot)编写MDX查询。

此查询在为OR时有效,但是当我添加括号并将第一个OR更改为AND时,它可以工作,但可以删除该度量,导致CDR和BOOK尺寸正确返回。拥有更多MDX知识的人可以告诉我我错过或不知道的事情吗?

WITH 
Member [Measures].[CDR_Label] AS [CDR].[CDR].CURRENTMEMBER.MEMBER_CAPTION  
Member [Measures].[Book_Label] AS [Book].[Book].CURRENTMEMBER.MEMBER_CAPTION 
SELECT 
  NON EMPTY 
  {[Measures].[CDR_Label],
  [Measures].[Book_Label],[Measures].[RepoRate.LATEST]} 
ON COLUMNS, 
NON EMPTY 
FILTER(
([CDR].CHILDREN,[Book].CHILDREN), (LEFT([CDR].[CDR].CURRENTMEMBER.MEMBER_CAPTION,1) = "8") AND 
(LEFT([Book].[Book].CURRENTMEMBER.MEMBER_CAPTION,2) = "ST" OR 
RIGHT([Book].[Book].CURRENTMEMBER.MEMBER_CAPTION,4) = "CIES")) 
ON ROWS 
FROM [TraderCube] 
WHERE ([Date].[Date].[2019-10-23])

enter image description here

这里是我更改它之前的查询,可以使用OR OR等。我希望上面的代码只返回以8开头的CDR,但是它丢失了度量(并且还破坏了我的标头-因为这实际上是从xll /自定义Excel函数内部触发到调用远程程序的dll中的)我正在构建一个非常自定义的插件时,使用AdomdClient程序包创建一个多维数据集-本质上是用户使用简单单词/从所列举的枚举中获得的能力,然后我用C#转换并构造MDX以向该多维数据集发射数据,然后返回2D数组到Excel:))。

WITH 
Member [Measures].[CDR_Label] AS [CDR].[CDR].CURRENTMEMBER.MEMBER_CAPTION  
Member [Measures].[Book_Label] AS [Book].[Book].CURRENTMEMBER.MEMBER_CAPTION SELECT NON EMPTY {[Measures].[CDR_Label],[Measures].[Book_Label],[Measures].[RepoRate.LATEST]} 
ON COLUMNS, 
NON EMPTY 
FILTER(
([CDR].CHILDREN,[Book].CHILDREN), 
LEFT([CDR].[CDR].CURRENTMEMBER.MEMBER_CAPTION,1) = "8" OR 
LEFT([Book].[Book].CURRENTMEMBER.MEMBER_CAPTION,2) = "ST" OR 
RIGHT([Book].[Book].CURRENTMEMBER.MEMBER_CAPTION,4) = "CIES") 
ON ROWS 
FROM [TraderCube] 
WHERE ([Date].[Date].[2019-10-23])

enter image description here

1 个答案:

答案 0 :(得分:0)

啊...忽略我!

我认为我很累,没有看到图案。从本质上讲,我只是复制了此内容,如果您要求一个度量存在两个维度模式,则会获得您期望的维度(在我的案例3中,是一个真实的度量以及两个伪造的/标签,用于使维度全部实现返回行)。

如果没有匹配项,则似乎会不带任何度量就将您的要求返回给您,因为尺寸组合中不存在这些度量。