联合 MDX 中的两个子选择

Posted

技术标签:

【中文标题】联合 MDX 中的两个子选择【英文标题】:Union two subselects in MDX 【发布时间】:2019-02-14 16:21:25 【问题描述】:

我有两个具有共同成员、行和列的查询:

WITH 
MEMBER [Measures].[AliasMeasure1] as [Measures].[F],format_string='#,0' 
MEMBER [Measures].[AliasMeasure2] as SUM(ParallelPeriod([Time].[E].[Year],1,[Time].[E].[Year].&[2018]) : ParallelPeriod([Time].[E].[Year],1,[Time].[E].[Year].&[2018]),[Measures].[AliasMeasure1])
MEMBER [Measures].[Growth] as ([Measures].[AliasMeasure1]-[Measures].[AliasMeasure2])/ABS( [Measures].[AliasMeasure2] ),format_string='#,0.00%'  

Select 
FILTER(NONEMPTY([RegionGlobal].[Region].[Total]) *[Area].[SDR].[Total],
NONEMPTY([RegionGlobal].[Region].CHILDREN - [RegionGlobal].[Region].&[MD]) *[Area].[SDR].CHILDREN,
NOT ISEMPTY([Measures].[AliasMeasure1])) *[Measures].[AliasMeasure1],
[Measures].[Growth] on columns, 

FILTER([CP].[PDR].MEMBERS,NOT ISEMPTY([Measures].[AliasMeasure1])) on rows  

其中一个查询有这个子选择:

FROM ( 
SELECT 
[Time].[E].[Year].&[2018]:[Time].[E].[Year].&[2018] on 0,
[RegionGlobal].[Region].[Total] on 1,
[Area].[Area].[Total] on 2,
[Global_LI].[isLI].&[1] on 3 FROM CUBE )

第二个查询非常相似:

FROM ( 
SELECT 
[Time].[E].[Year].&[2018]:[Time].[E].[Year].&[2018] on 0,
[RegionGlobal].[Region].&[USA] on 1,
[Area].[Area].&[AUSA] on 2 FROM CUBE )

如何将其合并到一个查询中?我尝试创建一个 Where 但有不同的维度。

提前致谢

【问题讨论】:

【参考方案1】:

您的子选择具有不同的层次结构和维度。我在下面的查询中平衡了它们。您可以将其用作子选择

    SELECT 
[Time].[E].[Year].&[2018]:[Time].[E].[Year].&[2018] on 0,

([RegionGlobal].[Region].[Total],[Area].[Area].[Total],[Global_LI].[isLI].&[1]),
([RegionGlobal].[Region].&[USA],[Area].[Area].&[AUSA],[Global_LI].[isLI].defaultmember)

 on 1
FROM CUBE

【讨论】:

以上是关于联合 MDX 中的两个子选择的主要内容,如果未能解决你的问题,请参考以下文章

如何将带有子选择的 SQL 查询转换为 MDX 查询?

SSAS MDX - 根据其他两个维度从一个维度中选择

SQLITE 中的两个递归选择联合

mdx 从周期中选择数据

MDX帮助 - 将月份作为值返回

MDX SSAS OLAP -- 根据维度选择切换属性