MDX 多条件过滤多个维度
MDX multiple conditions filter on multiple dimensions
我对 MDX 比较陌生,大约一个月左右,我现在正在针对我也在使用的远程多维数据集编写 MDX 查询 (Java 8 ActivePivot)。
此查询在它们是 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])
这里是我更改之前的查询,使用 OR OR 等有效。我希望上面的 return 只有以 8 开头的 CDR,它确实如此,但它失去了测量(并且也打破了我的 headers - 因为这实际上是从 xll / 自定义 Excel 函数,到使用 AdomdClient 包调用远程多维数据集的 dll,因为我正在构建一个非常自定义的插件 - 本质上是用户使用简单 words/from 枚举的能力,然后我在 C# 中翻译和构建 MDX 到向立方体开火。数据返回,我将二维数组发送回 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])
啊……别理我!
我觉得我累了,没有看到模式。本质上,我只是重现了这一点,如果你要求一个度量确实存在的二维模式,你会得到你期望的维度(在我的例子 3 中,一个真实的度量和两个假的/标签的维度将它们全部回到行)。
如果没有匹配项,似乎 return 您支持您要求的内容,但没有任何措施,因为维度组合不存在这些措施。
我对 MDX 比较陌生,大约一个月左右,我现在正在针对我也在使用的远程多维数据集编写 MDX 查询 (Java 8 ActivePivot)。
此查询在它们是 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])
这里是我更改之前的查询,使用 OR OR 等有效。我希望上面的 return 只有以 8 开头的 CDR,它确实如此,但它失去了测量(并且也打破了我的 headers - 因为这实际上是从 xll / 自定义 Excel 函数,到使用 AdomdClient 包调用远程多维数据集的 dll,因为我正在构建一个非常自定义的插件 - 本质上是用户使用简单 words/from 枚举的能力,然后我在 C# 中翻译和构建 MDX 到向立方体开火。数据返回,我将二维数组发送回 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])
啊……别理我!
我觉得我累了,没有看到模式。本质上,我只是重现了这一点,如果你要求一个度量确实存在的二维模式,你会得到你期望的维度(在我的例子 3 中,一个真实的度量和两个假的/标签的维度将它们全部回到行)。
如果没有匹配项,似乎 return 您支持您要求的内容,但没有任何措施,因为维度组合不存在这些措施。