如何获取MDX查询中用于分页的总行数?

时间:2012-04-21 17:48:31

标签: ssas mdx

我正在尝试在MDX(SSAS)中实现对大型数据集的分页。

我有以下内容来检索工作正常的分页数据:

SELECT 
{ 
  [Measures].[Mesasure1],
  [Measures].[Measure2]
} ON COLUMNS, 
SUBSET
(
  ORDER 
  (
    {
      (
        [Item].[Category].ALLMEMBERS
      )
    }, NULL, BASC
  ), 10, 50  --10 = start index, 50 = returned roes
) 
ON ROWS
FROM ( SELECT ( { [Time].[Date].&[2012-04-15T00:00:00]:[Time].[Date].&[2012-04-20T00:00:00] } ) ON COLUMNS
FROM [DataMartPerformance]
))

然而,我不能在我的生活中找到互联网上的任何地方,这有助于解释如何获得总行数。我是否在单独的查询中执行此操作?如果是这样的话? 或者我可以用某种方式将它包装到这个查询中吗?

2 个答案:

答案 0 :(得分:1)

与TSQL分页的方式类似,您需要运行另一个查询来计算总元素。你可能不得不修补这个,这取决于你如何完成原始查询,但我使用的是:

WITH 
MEMBER [Measures].[ElementCount] AS
{
    NONEMPTY
    (
        {
            [Item].[Category].ALLMEMBERS *
            { [Time].[Date].&[2012-04-15T00:00:00]:[Time].[Date].&[2012-04-20T00:00:00] } 
        },
        {
            [Measures].[Mesasure1],
            [Measures].[Measure2]
        }
    )
}.COUNT

SELECT
{
    [Measures].[ElementCount]
}
ON COLUMNS
FROM 
[DataMartPerformance]

对于过滤,您可以使用针对维度属性的存在来执行维度过滤:

WITH 
MEMBER [Measures].[ElementCount] AS
{
    NONEMPTY
    (
        EXISTS
        (
            {
                [Item].[Category].ALLMEMBERS *
                { [Time].[Date].&[2012-04-15T00:00:00]:[Time].[Date].&[2012-04-20T00:00:00] } 
            },
            {
                [Dimension].[Attribute].[FilterByThisAttribute]
            }
        ),
        {
            [Measures].[Mesasure1],
            [Measures].[Measure2]
        }
    )
}.COUNT

SELECT
{
    [Measures].[ElementCount]
}
ON COLUMNS
FROM 
[DataMartPerformance]

我还没有编写度量值过滤器,我需要为我自己的MDX分页构造函数做下一步...

答案 1 :(得分:1)

请试试这个:

 WITH 
 SET MySet As 
 (
   NONEMPTY (             
               [AU Time Sale Hour].[Hour Key].[Hour Key] 
            *  [Dim Country].[Country Key].[Country Key]
             )
  )
  Member [Measures] .cnt  AS MySet.Count 
  select [Measures] .cnt on Columns 
  from  [Me Stats DW Fact Sales]  

   where (
          {[Dim Visa].[Visa Key].&[2067],[Dim Visa].[Visa Key].&[2068] },
          [AU Time Sale Date].[Date].&[20091120]:[AU Time Sale Date].[Date].&[20091125] 
         )