Mdx 以另一个维度的值为条件在一个维度上进行度量

Mdx 以另一个维度的值为条件在一个维度上进行度量,mdx,Mdx,我是MDX的新手,有一个问题一直困扰着我 我基本上有下表(显然在我的多维数据集中有更多的幕后维度)。如果一个ID昨天是新的,它将出现在多维数据集中,带有日期T-1和类别“new”,它还将为日期T和类别“Old”提供一组不同的值。如果它昨天是旧的,它今天也会是旧的,并且具有不同的价值 我可以在T-1切片上获取“New”ID的值之和,但无法获取昨天是“New”的ID的今天(T)切片上的值之和(因此今天是旧的)-即昨天是新的ID的今天的值 | ID | Category | Date |

我是MDX的新手,有一个问题一直困扰着我

我基本上有下表(显然在我的多维数据集中有更多的幕后维度)。如果一个ID昨天是新的,它将出现在多维数据集中,带有日期T-1和类别“new”,它还将为日期T和类别“Old”提供一组不同的值。如果它昨天是旧的,它今天也会是旧的,并且具有不同的价值

我可以在T-1切片上获取“New”ID的值之和,但无法获取昨天是“New”的ID的今天(T)切片上的值之和(因此今天是旧的)-即昨天是新的ID的今天的值

|   ID    |  Category  | Date | Value |
|---------|------------|------|-------|
|    1    |   New      | T-1  |   a   |
|    1    |   Old      | T    |   b   |
|    2    |   Old      | T-1  |   c   |
|    2    |   Old      | T    |   d   |
|    3    |   New      | T-1  |   e   |
|    3    |   Old      | T    |   f   |
如果数据在一个平面表中,我想我可以用SQL查询它,但是当涉及到MDX时,我有点不知所措。谢谢

编辑:

下面的MDX为我提供了“旧的”ID的总和。我想我需要创建一个新的度量,它沿着日期片查看ID的PrevMember并检查它是否是新的,如果是,那么将ID的当前度量分配给这个新度量-但我不知道如何做

SELECT
NON EMPTY (
    [Date].Members
            ) ON 0
,
NON EMPTY (
    [Measures].[Value.SUM]
            ) ON 1
FROM [MyCube]
WHERE (
[Category].&[Old]
    )  
编辑2:
使用苏拉瓦的答案,我已经用下面的代码运行了我的代码

WITH 
SET NewIDs AS
    INTERSECT(NonEmpty([ID].Children, CROSSJOIN([Date].&[T-1], [Category].&[Old]))
        , NonEmpty([ID].Children, CROSSJOIN([Date].&[T], [Category].&[EOD]))
        )
SELECT 
NON EMPTY([Dim2].Children
    ) ON 0
,
NON EMPTY([NewIDs]
    ) ON 1
FROM [MyCube]
WHERE [Measures].[Value]
这有用吗?(在下面的代码中添加了注释)


你能举个例子说明你到底想在输出中看到什么吗?输出应该是b+f,昨天新增的ID的值之和您是否可以添加成功的MDX以及您正在努力尝试的MDX请求您发布一个新问题,并添加要求。我已经这样做了,谢谢SouravA-这回答了我的问题。
WITH SET NewYesterdayOldToday ///Get all such Ids which were new yesterday but are old today
AS
INTERSECT(
NonEmpty(
    [YourTable].[Id].[All].MEMBERS,
    [YourTable].[Category].&[Old] * [YourTable].[Date]. &[T])
,
NonEmpty(
    [YourTable].[Id].[All].MEMBERS,
    [YourTable].[Category].&[New] * [YourTable].[Date]. &[T-1])
)

MEMBER TotalValue AS ///Getting the sum of values corresponding to those Ids which are "NewYesterdayOldToday" today
(
NewYesterdayOldToday, [YourTable].[Date]. &[T], [Measures].[Value.SUM]
)

SELECT TotalValue 
    ON 0
FROM [MyCube]