具有命名集的成员在SSAS中始终返回相同的值
我需要将多维数据集作为普通表进行查询。此外,出于性能原因,我需要使用一个命名集(如果不使用该集,查询将花费10倍的时间)。问题是,对于Date Time calculated成员,我得到的每一行的值都是相同的。顺便说一句,我使用这个成员是因为我没有找到任何方法来查询“列”上的命名集 查询如下所示:具有命名集的成员在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
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'属性的坐标包含一个集。”还有其他想法吗?谢谢你的回答!