MDX记录计数

时间:2016-01-12 09:57:18

标签: mdx

任何人都可以告诉我如何获取MDX查询结果的记录数吗?我尝试了各种方法,但我还没有真正得到解决方案。我是MDX查询的初学者。

5 个答案:

答案 0 :(得分:0)

在多维数据集中创建一个计数或不同计数的度量。

答案 1 :(得分:0)

1)打开立方体

2)右键单击该度量所在的事实表

3)选择New Measure...

4)下拉列表并选择聚合

5)在源列部分,选择要聚合的列(如果无法找到它,请单击底部的show all columns - 这取决于您聚合的内容)

答案 2 :(得分:0)

WITH 
    MEMBER [Measures].[amount] as 
        COUNT(
            [your_dimension].[your_dimension_property].Members
        ) 
SELECT {[Measures].[amount]} ON COLUMNS 
FROM [your_awesome_cube] 

这样的代码将返回维度中的成员数量,COUNT方法具有此语法 Count(Set_Expression [ , ( EXCLUDEEMPTY | INCLUDEEMPTY ) ] ) 所以你可以做很多事情,比如过滤你的搜索

答案 3 :(得分:0)

与成员 度量为 [your_dimension]。[your_dimension_property] .Children.COUNT

选择小数。计数为0 从[your_awesome_cube]

答案 4 :(得分:0)

当您说记录计数时,基本上是在说行轴的有效组合。

让我们举一个基本的例子,查询返回3637行,其中1行是列名行。

select [Measures].[Sales Amount] on columns, 
(
[Customer].[Country].[Country],
[Product].[Product].[Product]
) on rows
from [Adventure Works]

现在无需运行查询就可以获取行计数,可以将组合放入count函数中,并将count函数放入运行时度量中

这将返回3636行。     与成员[Measures]。[rowCount]     如     count(([[Customer]。[Country]。[Country],[Product]。[Product]。[Product]))     在[冒险工作]的列中选择[度量]。[行数]

注意,我尚未消除行上的空组合。接下来让我们做

查询返回2101行,列标题又返回1行。     选择[度量]。[销售金额]列上,     非空     (     [客户]。[国家/地区]。[国家/地区],     [产品]。[产品]。[产品]     )行     来自[冒险作品]

现在让我们计算行数

这将返回2100行。     与成员[Measures]。[rowCount]     如     count(nonempty(([[Customer]。[Country]。[Country],[Product]。[Product]。[Product])     ,{[措施]。[销售金额]}     ))     选择[度量]。[行数]     在[冒险作品]的专栏上

到目前为止,我们只从一个度量值组中获取了度量值,现在让我们尝试多个度量值组。

select {[Measures].[Sales Amount],[Measures].[Internet Sales Amount]} on columns, 
non empty 
(
[Customer].[Country].[Country],
[Product].[Product].[Product]
) on rows
from [Adventure Works]
//Cell set consists of 2101 rows and 3 columns.

//Wrong way
with member [Measures].[rowCount]
as 
count(nonempty(( [Customer].[Country].[Country],[Product].[Product].[Product])
,{[Measures].[Internet Sales Amount]}
))
select [Measures].[rowCount] on columns from [Adventure Works]
//935

//Right way
with member [Measures].[rowCount]
as 
count(nonempty(( [Customer].[Country].[Country],[Product].[Product].[Product])
,{[Measures].[Sales Amount],[Measures].[Internet Sales Amount]}
))
select [Measures].[rowCount] 
on columns from [Adventure Works]
///2100

请注意,当我们仅使用一个度量时,结果可能不正确。如果我们使用的度量值为空,则将删除该组合。与我们行中其他位置一样,其他方法将确保该组合出现。

现在让我们为图片添加一个滤镜。

select {[Measures].[Sales Amount],[Measures].[Internet Sales Amount]} on columns, 
non empty
filter( 
(
[Customer].[Country].[Country],
[Product].[Product].[Product]
)
,[Measures].[Internet Sales Amount]>5000) on rows
from [Adventure Works]
//Cell set consists of 586 rows and 3 columns.

//Wrong way
with member [Measures].[rowCount]
as 
count(nonempty(( [Customer].[Country].[Country],[Product].[Product].[Product])
,{[Measures].[Sales Amount],[Measures].[Internet Sales Amount]}
))
select [Measures].[rowCount] 
on columns from [Adventure Works]
//2100

//Right way
with member [Measures].[rowCount]
as 
count(nonempty(
filter(([Customer].[Country].[Country],[Product].[Product].[Product]),[Measures].[Internet Sales Amount]>5000) 
,{[Measures].[Sales Amount],[Measures].[Internet Sales Amount]}
))
select [Measures].[rowCount] 
on columns from [Adventure Works]
///585

再次,直到我给RowCount度量我在行轴上的准确灵敏度时,它才会失败。