icCube MDX与轴或过滤器中相同尺寸的明显计数

时间:2015-12-04 15:38:08

标签: mdx iccube

我在$ Monitoring多维数据集上有以下MDX语句:

 WITH
MEMBER [Measures].[Unique Users] AS distinctcount(([User].[User].[User L].members
    , [Measures].[Open Report Count])),format_string="#,#0"
SELECT
NON EMPTY { {[Measures].[Unique Users],[Measures].[Open Report Count]} } ON COLUMNS,
NON EMPTY { [Time].[Time].[Day L] } ON ROWS
 FROM ( SELECT 
{ lag(strtomember("[Time].[Time].["+right("0"+str(day(SchemaRefreshTime())),2) +"-"+ right("0"+str(month(SchemaRefreshTime())),2) + "-"+str(year(SchemaRefreshTime()))+ "]"), 6):strtomember("[Time].[Time].["+right("0"+str(day(SchemaRefreshTime())),2) +"-"+ right("0"+str(month(SchemaRefreshTime())),2) + "-"+str(year(SchemaRefreshTime()))+ "]") } ON 0 FROM [$Monitoring])

/*ic3navigation*/
axis 1 NON EMPTY order(nonempty(Descendants([Report].[Report], ,leaves),[Open Report Count]),[Open Report Count],desc)
FILTERBY /*ic3*/ {[Time].[Time].[ALL].&[2015].&[2015-11-27].&[27-11-2015]}
FILTERBY /*ic3*/ {[User].[User].[All Users].&[<user>]}
  • *)使用实际用户名
  • 更改<user>
  • *)... lag ..公式用于根据架构刷新时间给出最近7天
  • ***)如果您已填写现有用户
  • ,则可以在任何$ Monitoring多维数据集上运行此MDX查询

我希望distinctcount函数能够考虑FILTERBY。所以结果应该是1(只选择了一个用户)。奇怪的是,事实并非如此。它显示了多个用户,因此我假设不考虑用户的FILTERBY用于distinctcount。

当我将FILTER BY移动到AXIS或ROWS或COLUMNS时,会发生同样的事情。

这是一个错误还是这就是MDC / MDX ++在icCube中的工作原理?

请告知。

1 个答案:

答案 0 :(得分:0)

这是预期的行为。欢迎使用高级MDX!

FilterBy与子选择完全相同。

  • 会员按计算成员中的subselect或where子句进行过滤。
  • 在计算成员中,定义层次结构的元组将覆盖&#39;在子查询或where子句中定义的那个。

------更新------

如果您想使用where子句/ subselect过滤该组,请使用EXISTING运算符。

import urllib2
import time
url = urllib2.urlopen('http://www.dev-explorer.com/articles/using-python-httplib')
html = url.readlines()
for line in html:
    print line

time.sleep(5)

如果您只想要具有单元格元组数据的用户:

MEMBER [Measures].[Unique Users] AS count( Existing [User].[User].[User L].members),format_string="#,#0"

如果您有大量用户,我建议您添加一项衡量用户ID的独特用量[Distinct Users]。这样就可以避免我们在这里面临的所有复杂性。