将不同维度的成员加入MDX中的行中

问题描述 投票:0回答:1

我感兴趣的是4个单独的维度:( A,B,C date)。每个维度都有多个属性层次结构。理论上,每个维度都相互映射。 C-> B->A。换句话说,B的多个成员映射到A中的单个成员,C的多个成员映射到B中的单个成员。

最初我有以下有效的查询

SELECT 
(
    [Measures].[Count]
)
ON COLUMNS,
(
    [A].[Id].[Id].MEMBERS,
    FILTER
    (
        [A].[Name].[Name].MEMBERS, 
        LEFT([A].[Name].CURRENTMEMBER.NAME, 4) <> "test"
    ),
    [A].[Start].[Start].MEMBERS,
    [A].[Owner].[Owner].MEMBERS
)
ON ROWS
FROM 
(
    SELECT 
    (
        {[A].[Start].&[2020-05-10] : [A].[Start].&[2020-05-25]}
    )
    ON COLUMNS 
    FROM [Model]
)
WHERE
(
    {[date].[date].&[2020-05-10] : [date].[date].&[2020-05-25]},
    {[B].[End].&[2020-05-25]:NULL},
    [A].[Product].&[ASDF]
)

我现在还有其他要求,只过滤B.id层次结构的“已启用”成员。因此,在WHERE子句中,添加了以下行:[B].[Status].&[Enabled]。这并没有改变我的输出,但是我知道应该这样,因为我必须在PowerBI中创建需要模拟的表,并且这种情况从A.id层次结构中消除了一些成员。

然后我尝试在行上添加[B].[id].[id].MEMBERS[B].[Status].[Status].MEMBERS,以查看该关系是什么以及为什么不删除A.id的某些成员。我这样做如下:

(
    [A].[Id].[Id].MEMBERS,
    FILTER
    (
        [A].[Name].[Name].MEMBERS, 
        LEFT([A].[Name].CURRENTMEMBER.NAME, 4) <> "test"
    ),
    [A].[Start].[Start].MEMBERS,
    [A].[Owner].[Owner].MEMBERS,
    [B].[id].[id].MEMBERS,
    [B].[Status].[Status].MEMBERS
)
ON ROWS

但是这表明A的每个成员都与B的每个成员映射。基本上是交叉联接。这不是我所需要的。就像我提到的那样,B中有唯一的成员映射到A中的一个成员。我做了很多谷歌搜索,并遇到了LINKMEMBER()函数,但这似乎不适用于我需要的实现。任何帮助或建议,表示赞赏。

对于MDX来说还不是很新,所以我对此深表歉意。

ssas mdx cube
1个回答
0
投票

欢迎使用Stackoverflow和MDX。您面临的问题是通过使用非空地址。在MDX中,如果您编写(DimA.Attribute1.members,DimB.Attribute1.members),则意味着您要进行交叉联接。为了确保仅返回有效的那些组合,您必须使用非空。在下面尝试修改过的查询

SELECT 
(
    [Measures].[Count]
)
ON COLUMNS,
non empty(
    [A].[Id].[Id].MEMBERS,
    FILTER
    (
        [A].[Name].[Name].MEMBERS, 
        LEFT([A].[Name].CURRENTMEMBER.NAME, 4) <> "test"
    ),
    [A].[Start].[Start].MEMBERS,
    [A].[Owner].[Owner].MEMBERS
)
ON ROWS
FROM 
(
    SELECT 
    (
        {[A].[Start].&[2020-05-10] : [A].[Start].&[2020-05-25]}
    )
    ON COLUMNS 
    FROM [Model]
)
WHERE
(
    {[date].[date].&[2020-05-10] : [date].[date].&[2020-05-25]},
    {[B].[End].&[2020-05-25]:NULL},
    [A].[Product].&[ASDF],[B].[Status].&[Enabled]
)
© www.soinside.com 2019 - 2024. All rights reserved.