2012-04-21 76 views
1

我正在嘗試實現分頁到MDX(SSAS)中的大型數據集。如何獲取MDX查詢中用於分頁的總行數?

我有以下的檢索的正常工作分頁數據:

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] 
)) 

但我不能爲我的生活發現有助於解釋如何得到總行可以在互聯網上的任何地方。我是否在單獨的查詢中執行此操作?如果是這樣如何? 或者我可以以某種方式將它包裝到這個查詢中嗎?

回答

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尋呼構造...

+0

非常感謝,工作!但是,當我嘗試添加另一個篩選器時,它會返回太多結果。我相信因爲我正在過濾它不正確。 [Category]。[Category] ​​ [Time]。[Date]。&[2012-04-15T00:00:00]:[Time]。[Date]。& [2012-04-20T00:00:00] * [Item]。[所有者]。[388]'。我怎麼過濾這個錯誤? – tank104 2012-04-28 12:50:41

+0

我剛纔在上面實現了一個連接而不是過濾器。 Woops。是否有可能過濾子查詢?我一直無法找到任何這方面的信息。 (道歉,如果我的terminologoy不是最好的,來自TSQL背景) – tank104 2012-04-28 12:57:26

+0

@AndrewThomas取決於你在做什麼類型的過濾器?我編輯了我的答案來展示一個例子。 – Meff 2012-04-30 11:08:58

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] 
     )