具有命名集的成员在SSAS中始终返回相同的值

具有命名集的成员在SSAS中始终返回相同的值,ssas,mdx,olap,olap-cube,Ssas,Mdx,Olap,Olap Cube,我需要将多维数据集作为普通表进行查询。此外,出于性能原因,我需要使用一个命名集(如果不使用该集,查询将花费10倍的时间)。问题是,对于Date Time calculated成员,我得到的每一行的值都是相同的。顺便说一句,我使用这个成员是因为我没有找到任何方法来查询“列”上的命名集 查询如下所示: with set [CurrentDates] as filter([Time].[Date].Members, not isempty([Measures].[Net Sold Units])) m

我需要将多维数据集作为普通表进行查询。此外,出于性能原因,我需要使用一个命名集(如果不使用该集,查询将花费10倍的时间)。问题是,对于Date Time calculated成员,我得到的每一行的值都是相同的。顺便说一句,我使用这个成员是因为我没有找到任何方法来查询“列”上的命名集

查询如下所示:

with
set [CurrentDates] as filter([Time].[Date].Members, not isempty([Measures].[Net Sold Units]))
member [Measures].[Date Time] as [CurrentDates].Item(1).Member_Key
select
{
[Measures].[Date Time],
[Measures].[Song Name]
--other calculated members
}
on columns
,
subset
(
    {
        order
        (
            except
            (
                NONEMPTY([Trend Transaction].[Trend Transaction].Members, [Measures].[Net Sold Units]), 
                [Trend Transaction].[Trend Transaction].[All]
            ),
            [Measures].[Date Time], basc
        )
    }
    ,0, 50)
on rows 
from Trends
where
(
{[Time].[Date].&[2012-09-01T00:00:00],[Time].[Date].&[2012-09-02T00:00:00]}
)
set CurrentDates as filter([Time].[Date].[Date], not isempty([Measures].[Net Sold Units]))
member [Measures].[Date Time] as CDATE(NONEMPTY(CurrentDates, [Measures].[Net Sold Units]).Item(0).Member_Key)
我得到的结果如下:

with
set [CurrentDates] as filter([Time].[Date].Members, not isempty([Measures].[Net Sold Units]))
member [Measures].[Date Time] as [CurrentDates].Item(1).Member_Key
select
{
[Measures].[Date Time],
[Measures].[Song Name]
--other calculated members
}
on columns
,
subset
(
    {
        order
        (
            except
            (
                NONEMPTY([Trend Transaction].[Trend Transaction].Members, [Measures].[Net Sold Units]), 
                [Trend Transaction].[Trend Transaction].[All]
            ),
            [Measures].[Date Time], basc
        )
    }
    ,0, 50)
on rows 
from Trends
where
(
{[Time].[Date].&[2012-09-01T00:00:00],[Time].[Date].&[2012-09-02T00:00:00]}
)
set CurrentDates as filter([Time].[Date].[Date], not isempty([Measures].[Net Sold Units]))
member [Measures].[Date Time] as CDATE(NONEMPTY(CurrentDates, [Measures].[Net Sold Units]).Item(0).Member_Key)
日期时间歌曲名称


2012年9月1日你去过哪里 2012年9月1日我们很年轻 2012年9月1日完全清醒(最初由凯蒂·佩里表演)[卡拉OK版] 2012年9月1日 2012年9月1日如此复杂(最初由Rick Ross表演)[卡拉OK版] . .

最后几首歌的日期显然是错误的,应该是2012年9月2日

我认识到我是SSAS的新手,可能我在这里遗漏了什么:)

有什么方法可以满足我的需要吗


提前谢谢

您的计算:
成员[测量].[Date-Time]为[CurrentDates]。项目(1)。成员键
将始终引用集合中的第二项(请记住它是基于0的)

您想要的是使用
RANK
函数:这与
CURRENTMEMBER
函数一起使用,在呈现集合时会返回集合中的项目位置。e、 g.与:

set [CurrentDates] as filter([Time].[Date].Members, not isempty([Measures].[Net Sold Units]))
member MemberRank As 'RANK(Time].[Date].CURRENTMEMBER , CurrentDates)'
member [Measures].[Date Time] as [CurrentDates].Item(MemberRank-1).UNIQUE_NAME

好的,最终的解决方案是让集合和成员像这样:

with
set [CurrentDates] as filter([Time].[Date].Members, not isempty([Measures].[Net Sold Units]))
member [Measures].[Date Time] as [CurrentDates].Item(1).Member_Key
select
{
[Measures].[Date Time],
[Measures].[Song Name]
--other calculated members
}
on columns
,
subset
(
    {
        order
        (
            except
            (
                NONEMPTY([Trend Transaction].[Trend Transaction].Members, [Measures].[Net Sold Units]), 
                [Trend Transaction].[Trend Transaction].[All]
            ),
            [Measures].[Date Time], basc
        )
    }
    ,0, 50)
on rows 
from Trends
where
(
{[Time].[Date].&[2012-09-01T00:00:00],[Time].[Date].&[2012-09-02T00:00:00]}
)
set CurrentDates as filter([Time].[Date].[Date], not isempty([Measures].[Net Sold Units]))
member [Measures].[Date Time] as CDATE(NONEMPTY(CurrentDates, [Measures].[Net Sold Units]).Item(0).Member_Key)

关键是将命名集放入作用域中,以便在成员中引用。

8分钟后,我得到了这样一个信息:“MDX函数CURRENTMEMBER失败,因为'Date'属性的坐标包含一个集。”还有其他想法吗?谢谢你的回答!