Ssas MDX中的分页

Ssas MDX中的分页,ssas,mdx,Ssas,Mdx,我是MDX的新手,目前正在这方面苦苦挣扎。在如何根据WHERE条款获得客户总数方面,我急需帮助。请看下面我的问题。我正在尝试实现分页,所以我需要总计数来获得要显示的页数。可能吗 WITH MEMBER [Measures].[DS_TY] AS '([Transaction Type].[All Transaction Type].[Daily Sales], [Measures].[TY])' MEMBER [Measures].[ST_TY] AS '([Transaction

我是MDX的新手,目前正在这方面苦苦挣扎。在如何根据WHERE条款获得客户总数方面,我急需帮助。请看下面我的问题。我正在尝试实现分页,所以我需要总计数来获得要显示的页数。可能吗

WITH 
MEMBER [Measures].[DS_TY] AS 
  '([Transaction Type].[All Transaction Type].[Daily Sales], [Measures].[TY])' 
MEMBER [Measures].[ST_TY] AS 
'([Transaction Type].[All Transaction Type].[Stock Transfer], [Measures].[TY])' 
MEMBER [Measures].[IS_TY] AS 
  '([Transaction Type].[All Transaction Type].[IServ], [Measures].[TY])' 
MEMBER [Measures].[TOT_TY] AS 
  '([Transaction Type].[All Transaction Type], [Measures].[TY])' 
MEMBER [Measures].[DS_LY] AS 
  '([Transaction Type].[All Transaction Type].[Daily Sales], [Measures].[LY])' 
MEMBER [Measures].[ST_LY] AS 
'([Transaction Type].[All Transaction Type].[Stock Transfer], [Measures].[LY])' 
MEMBER [Measures].[IS_LY] AS 
  '([Transaction Type].[All Transaction Type].[IServ], [Measures].[LY])' 
MEMBER [Measures].[TOT_LY] AS 
  '([Transaction Type].[All Transaction Type], [Measures].[LY])' 
MEMBER [Measures].[2] AS 
  'iif([LY]=0 Or [LY]=Null, Null, ([TY] - [LY])/[LY])' 
MEMBER [Measures].[4] AS 
  '[1] - [TY]' 
MEMBER [Measures].[6] AS 
  '[5] - [TY]' 
SET smeasures AS 
'{[DS_TY],[ST_TY],[IS_TY],[TOT_TY],[DS_LY],[ST_LY],[IS_LY],[TOT_LY],[1],[2],[3],[4],[5],[6]}' 
MEMBER [Measures].[TY] AS 
  '[Measures].[Gross Up Sales YTDTY Amt (Allocation)]' 
MEMBER [Measures].[LY] AS 
  '[Measures].[Gross Up Sales YTDLY Amt (Allocation)]' 
MEMBER [Measures].[1] AS 
  '[Measures].[Quota Amt YTDTY (Allocation)]' 
MEMBER [Measures].[3] AS 
  '[Measures].[%Perf YTDTY GrossUp (Allocation)]' 
MEMBER [Measures].[5] AS 
  '[Measures].[Quota Annual Amt TY (Allocation)]' 
SELECT smeasures ON COLUMNS, 
NON EMPTY ORDER ( 
  { 
    [Client Customer].[Client Customer].[Customer].members 
  }, 
  [Client Customer].currentmember.name, 
  basc 
) ON ROWS 
FROM [CClient] 
WHERE ( 
      { 
        [Time].[Time].[Year].[2020].[November] 
      }, 
      [Transaction Type].[All Transaction Type], 
{[Client Org].[Level 02]}- 
DESCENDANTS({[Client Org].&[D2_BTR2099_01], [Client Org].&[D2_DTR2099_99], [Client Org].&[D2_GTR2099_02]}) 
    ) 

提前谢谢你

您需要使用子集进行分页。让我带你看一个例子。它基于Microsoft AdventureWorks

所以我想看看2012年法国所有产品的互联网销售额

select {[Measures].[Internet Sales Amount]}on 0,

order (
filter({[Product].[Product].[Product]},[Measures].[Internet Sales Amount]>0)
,[Measures].[Internet Sales Amount],desc)
on 1 
from 
[Adventure Works]
where 
([Date].[Calendar Year].&[2012],[Geography].[Country].&[France])
这个结果是

这是94行,因为标头也被计数,所以SSMS显示95行

现在,让我们更改查询,只返回行数,而不返回实际行数。为此,我们使用一个计算的度量值,它将具有行轴的整个集合表达式。然后我们将计数函数应用于此

---total Row Count 
with member 
Measures.ResultSetCount 
as
(filter({[Product].[Product].[Product]},[Measures].[Internet Sales Amount]>0)).count

select Measures.ResultSetCount  on 0
from [Adventure Works]
where 
([Date].[Calendar Year].&[2012],[Geography].[Country].&[France])

我们现在知道我们有94排。现在让我们以10页的形式返回它们

------Paging 
select {[Measures].[Internet Sales Amount]}on 0,

subset(
order (
filter({[Product].[Product].[Product]},[Measures].[Internet Sales Amount]>0)
,[Measures].[Internet Sales Amount],desc)
,0,10)
on 1 
from 
[Adventure Works]
where 
([Date].[Calendar Year].&[2012],[Geography].[Country].&[France])

结果是,对于第1页,将“0”替换为1,在“0,10)”中的10之前,您将有第2页,依此类推