MDX过滤在事实级别

时间:2010-03-09 00:29:01

标签: filter mdx pentaho mondrian

我是mdx sintaxys的新手。

我有下一个要求,我需要能够使用mdx来解决它,如果可能的话。我需要显示超出价值大于“X”的SALE交易数量,金额值小于“Y”的SALE交易数量,超出值的CREDIT交易数量大于“Z”。等等。我的多维数据集有一个名为“amount”的度量,其聚合函数为“sum”,transactionNumber具有agregate函数“count”和time dimesion,transactionType维度等。

问题是,X,Y和Z是动态值并由用户配置,我需要读取这些值,构建查询并执行它víaxm。

我将结果集作为下一个结果集

                  Greater than > 200 USD       less than < 0.10       total

          SALE            150                         10               300
          CREDIT          200                         30               600
          VODI            10                           2                60

你可以提供给我的任何帮助,我会很感激

1 个答案:

答案 0 :(得分:2)

只有当您拥有处于事务级别的属性时,才可以执行此操作,否则您的度量将预先汇总到更高级别。

如果您确实拥有类似[Transaction ID]属性的内容,则可以编写如下查询。

WITH 
  MEMBER Measures.[Greater than 200 USD] as 
    SUM(Filter([Transaction ID].[Transaction ID].[Transaction ID], Measures.Amount > 200)
       , Measures.Count)
  MEMBER Measures.[Less than 0.10 USD] as 
    SUM(Filter([Transaction ID].[Transaction ID].[Transaction ID], Measures.Amount > 200)
       , Measures.Count)
  MEMBER Measures.Total as Measures.Count
SELECT
  {Measures.[Greater than 200 USD]
    ,Measures.[Less than 0.10 USD]
    ,Measures.[Total]} ON columns
 , [Transaction Type].[Transaction Type].[Transaction Type] ON Rows
FROM <Cube>