1

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

しかし、私は一生の間、利用可能な行の総数を取得する方法を説明するのに役立つインターネット上の場所を見つけることができません。別のクエリでそれを行いますか?もしそうなら、どのように?それとも、どういうわけかこの1つのクエリにラップできますか?

4

2 に答える 2

2

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ページングコンストラクターに対して作成する必要があります...

于 2012-04-26T15:51:08.127 に答える
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] 
         )
于 2013-10-02T08:53:45.977 に答える