MDX 中的前 10 条记录
Top 10 records in MDX
如何从以下查询中获取前 10 条记录?此查询抛出内存不足异常。
SELECT
[Build].[Build ID] ON 0
,
[Build].[Build Definition Name].MEMBERS*
[Build].[Build].MEMBERS*
[Build].[Build Start Time].MEMBERS*
[Build Status].[Build Status] ON 1
FROM Build
根据MSDN,您使用TOPCOUNT
函数获取前N个值,其定义为
TopCount(Set_Expression,Count [ ,Numeric_Expression ] )
你想要前 10 名基于什么? 在没有任何衡量标准的情况下,它会根据默认衡量标准让你进入前 10 名。
WITH SET TOP10BuildID
AS
TopCount(([Build].[Build ID].MEMBERS*
[Build].[Build Definition Name].MEMBERS*
[Build].[Build].MEMBERS*
[Build].[Build Start Time].MEMBERS*
[Build Status].[Build Status]),10)
SELECT
TOP10BuildID ON 0
[Measures].SomeMeasure
ON 1
FROM [Build]
这与 Sourav 的答案完全相同,但在没有创建自定义集的情况下稍微简单一些:
SELECT
[Build].[Build ID] ON 0
,TopCount
(
[Build].[Build Definition Name].MEMBERS*
[Build].[Build].MEMBERS*
[Build].[Build Start Time].MEMBERS*
[Build Status].[Build Status]
,10
) ON 1
FROM Build;
我刚刚针对 AdvWrks
进行了测试,因为我对您的错误消息很感兴趣。
此脚本在我的机器上使用热缓存需要 11 秒:
SELECT [Measures].[Internet Order Quantity] ON 0,
NON EMPTY
[Date].[Date].MEMBERS
*
[Product].[Subcategory].MEMBERS
*
[Geography].[Country].MEMBERS
*
[Customer].[Gender].MEMBERS
ON 1
FROM
[Adventure Works]
而这是瞬时的:
SELECT [Measures].[Internet Order Quantity] ON 0,
NON EMPTY
TOPCOUNT(
[Date].[Date].MEMBERS
*
[Product].[Subcategory].MEMBERS
*
[Geography].[Country].MEMBERS
*
[Customer].[Gender].MEMBERS
, 10
)
ON 1
FROM
[Adventure Works]
您的错误可能是因为它试图 return 并在您的结果面板中呈现一个非常大的 table。
如何从以下查询中获取前 10 条记录?此查询抛出内存不足异常。
SELECT
[Build].[Build ID] ON 0
,
[Build].[Build Definition Name].MEMBERS*
[Build].[Build].MEMBERS*
[Build].[Build Start Time].MEMBERS*
[Build Status].[Build Status] ON 1
FROM Build
根据MSDN,您使用TOPCOUNT
函数获取前N个值,其定义为
TopCount(Set_Expression,Count [ ,Numeric_Expression ] )
你想要前 10 名基于什么? 在没有任何衡量标准的情况下,它会根据默认衡量标准让你进入前 10 名。
WITH SET TOP10BuildID
AS
TopCount(([Build].[Build ID].MEMBERS*
[Build].[Build Definition Name].MEMBERS*
[Build].[Build].MEMBERS*
[Build].[Build Start Time].MEMBERS*
[Build Status].[Build Status]),10)
SELECT
TOP10BuildID ON 0
[Measures].SomeMeasure
ON 1
FROM [Build]
这与 Sourav 的答案完全相同,但在没有创建自定义集的情况下稍微简单一些:
SELECT
[Build].[Build ID] ON 0
,TopCount
(
[Build].[Build Definition Name].MEMBERS*
[Build].[Build].MEMBERS*
[Build].[Build Start Time].MEMBERS*
[Build Status].[Build Status]
,10
) ON 1
FROM Build;
我刚刚针对 AdvWrks
进行了测试,因为我对您的错误消息很感兴趣。
此脚本在我的机器上使用热缓存需要 11 秒:
SELECT [Measures].[Internet Order Quantity] ON 0,
NON EMPTY
[Date].[Date].MEMBERS
*
[Product].[Subcategory].MEMBERS
*
[Geography].[Country].MEMBERS
*
[Customer].[Gender].MEMBERS
ON 1
FROM
[Adventure Works]
而这是瞬时的:
SELECT [Measures].[Internet Order Quantity] ON 0,
NON EMPTY
TOPCOUNT(
[Date].[Date].MEMBERS
*
[Product].[Subcategory].MEMBERS
*
[Geography].[Country].MEMBERS
*
[Customer].[Gender].MEMBERS
, 10
)
ON 1
FROM
[Adventure Works]
您的错误可能是因为它试图 return 并在您的结果面板中呈现一个非常大的 table。