Фильтрация MDX на уровне фактов - PullRequest
3 голосов
/ 09 марта 2010

я довольно новичок в mdx sintaxys.

У меня есть следующее требование, которое мне нужно решить, используя mdx, если это возможно. Мне нужно показать количество транзакций SALE, значение которых больше «X», количество транзакций SALE, значение суммы которых меньше «Y», количество транзакций CREDIT, значение которых больше «Z». и так далее. у моего куба есть мера с именем «сумма» с агрегатной функцией «сумма» и транзакцией с совокупной функцией «счет» и измерением времени, измерением транзакции и другими.

Дело в том, что X, Y и Z являются динамическими значениями и настраиваются пользователями, мне нужно прочитать эти значения, построить запрос и выполнить его через xmla.

Я рассматриваю набор результатов как следующий

                  Greater than > 200 USD       less than < 0.10       total

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

любая помощь, которую вы можете оказать мне, я буду признателен за это

1 Ответ

2 голосов
/ 09 марта 2010

Это было бы возможно, только если у вас был атрибут на уровне транзакции, в противном случае ваши показатели будут предварительно агрегированы на более высокий уровень.

Если у вас есть что-то вроде атрибута [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>
...