Ssas 如何获取MDX查询中用于分页的总行数?
我试图在MDX(SSAS)中实现对大型数据集的分页 我使用以下方法检索分页数据,效果良好:Ssas 如何获取MDX查询中用于分页的总行数?,ssas,mdx,Ssas,Mdx,我试图在MDX(SSAS)中实现对大型数据集的分页 我使用以下方法检索分页数据,效果良好: SELECT { [Measures].[Mesasure1], [Measures].[Measure2] } ON COLUMNS, SUBSET ( ORDER ( { ( [Item].[Category].ALLMEMBERS ) }, NULL, BASC ), 10, 50 --10 = start ind
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]
))
然而,在我的一生中,在互联网上找不到任何有助于解释如何获得可用的总行数的地方。我是否在单独的查询中执行此操作?如果是,怎么做?
或者我可以将它以某种方式包装到这个查询中吗?与您执行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]
对于筛选,您可以对维度属性使用exists进行维度筛选:
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分页构造函数编写度量值过滤器…请尝试以下操作:
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]
)
非常感谢,这很有效!但是,当我尝试添加另一个过滤器时,它会返回太多的结果。我相信,因为我过滤不正确。我也更改了:
[Item].[Category].[Category].*[Time].[Date].&2012-04-15T00:00:00]:[Time].[Date].&2012-04-20T00:00:00].*[Item].[Owner].&388]
。我怎么会过滤出这个错误呢?我刚刚意识到在上面我在做一个连接而不是过滤。呜呜声。是否可以筛选子查询?我没能在这上面找到任何东西。(如果我的Terminology不是最好的,请道歉,来自TSQL背景)@AndrewThomas取决于你正在使用的过滤器类型?我已经编辑了我的答案来展示一个例子。