不同维度之间的mdx并集

Mdx union between different dimensions

我遇到的情况是我在一个模型中有两个不同的维度。维度 A 具有 ColorId、FirstColor 和 SecondColor。维度 B 具有 ColorId 和 Firstcolor。我正在尝试从两个不同的维度获取完整的 colorId 列表。请记住这个mdx需要在ssrs中使用。

维度 A

ColorId     FirstColor    SecondColor
T0z17       Blue           Green
T0lqa       Red            Yellow

维度 B

ColorId     FirstColor
T201k       Black
Tph1v       Orange

预期输出(仅 1 列)

ColorId
T0z17
T0lqa
T201k
Tph1v

试试这个联合查询:

WITH MEMBER [Measures].[Color] as 
   IIf(
     [Dimension A].[Color Id].CurrentMember 
        Is [Dimension A].[Color Id].[All]
   , [Dimension B].[Color Id].CurrentMember.Name
   , [Dimension A].[Color Id].CurrentMember.Name
   )
SELECT [Measures].[Color] on 0,
{
 [Dimension A].[Color Id].[Color Id].Members
 * [Dimension B].[Color Id].[All]
}
+
{
 [Dimension A].[Color Id].[All]
 * [Dimension B].[Color Id].[Color Id].Members
}
On 1
FROM [YourCube]

由于 Greg 的回答不是很清楚,我将按以下方式修复他的代码:

With 
Member [Measures].[SameColor] as
IIF(
    [Dimension A].[Color Id].CurrentMember.Name = [Dimension B].[Color Id].CurrentMember.Name,
    1,
    NULL
)

Member [Measures].[OnlyAColor] as
IIF(
    IsEmpty(
        LinkMember(
            [Dimension A].[Color Id].CurrentMember,
            [Dimension B].[Color Id]
        )
    ),
    1,
    NULL
)

Member [Measures].[OnlyBColor] as
IIF(
    IsEmpty(
        LinkMember(
            [Dimension B].[Color Id].CurrentMember,
            [Dimension A].[Color Id]
        )
    ),
    1,
    NULL
)

Member [Measures].[Color] as 
IIF(
    [Dimension A].[Color Id].CurrentMember is [Dimension A].[Color Id].[All],
    [Dimension B].[Color Id].CurrentMember.Name
    [Dimension A].[Color Id].CurrentMember.Name
)

Select [Measures].[Color] on 0,  
NonEmpty(
    [Dimension A].[Color Id].[Color Id].Members * [Dimension B].[Color Id].[Color Id].Members,
    [Measures].[SameColor]
)
+
NonEmpty(
    [Dimension A].[Color Id].[Color Id].Members * [Dimension B].[Color Id].[All],
    [Measures].[OnlyAColor]
)
+
NonEmpty(
    [Dimension A].[Color Id].[All] * [Dimension B].[Color Id].[Color Id].Members,
    [Measures].[OnlyBColor]
) on 1
From [YourCube]