仅在现有事实上聚合MDX查询结果

时间:2012-08-15 13:17:17

标签: ssas mdx olap cube

我对MDX很新,所以我可能会错过很简单的事情。

在我的多维数据集中,我有一个维度[Asset]和一个度量[Visits],计算(在这种情况下)资产已被消耗的访问次数。需要注意的一点是,并非每次访问都与资产相关联。

我需要知道的是,至少有一项资产消耗了多少次访问。我写了以下查询:

SELECT
  [Asset].[All] ON COLUMNS,
  [Measures].[Visits] ON ROWS
FROM
  [Analytics]

但是此查询只返回多维数据集中的总访问次数。我尝试将NON EMPTY修饰符应用于两个轴,但这并没有帮助。

2 个答案:

答案 0 :(得分:1)

此查询应该能满足您的期望:

WITH MEMBER [Asset].[Asset Name].[All Assets] AS
  AGGREGATE( EXCEPT( [Asset].[Asset Name].MEMBERS, { [Asset].[All] } ) )
SELECT
  { [Asset].[Asset Name].[All Assets] } ON COLUMNS,
  [Measures].[Visits] ON ROWS
FROM
  [Analytics]

如果未排除所有成员,您可能需要将{[Asset].[Asset Name].[All]}作为Except的第二个参数。

在查询中,我创建了一个应该代表所有现有资产的计算成员[Asset].[Asset Name].[all assets]。我认为您现有的资产都是[Asset].[Asset Name]级别的所有成员,但是All成员。

您可以找到有关聚合函数here的更多信息。

答案 1 :(得分:0)

这也有效:

SELECT
  [Measures].[Visits] ON 0
FROM
  [Analytics]
WHERE
  DRILLDOWNLEVEL([Asset].[All])

更新以及:

SELECT
  [Measures].[Visits] ON 0
FROM
  [Analytics]
WHERE
  [Asset].[All].CHILDREN