MDX фильтрация на уровне факта
Вопрос
Я довольно новичок в MDX Sintaxys.
У меня есть следующее требование, которое мне нужно иметь возможность решить его с помощью MDX, если это возможно. Мне нужно показать количество транзакций продаж, которые значение AMOUT больше, чем «x», количество транзакций продаж, которое стоимость суммы меньше, чем «y», количество кредитных транзакций, которое значение Amout больше, чем «z». и так далее. Мой куб имеет меру, называемую «сумма» с совокупной функцией «сумма» и транзакционномеров с агрогатной функцией «количество», а также временем, измерением TransactionType и другими.
Дело в том, что x, y и z являются динамическими значениями и настроены пользователями, мне нужно прочитать эти значения, создать запрос и выполнить его vía xmla.
Я выступаю за результат в качестве следующего
Greater than > 200 USD less than < 0.10 total
SALE 150 10 300
CREDIT 200 30 600
VODI 10 2 60
Любая помощь, которую вы можете мне оказать, я буду признателен
Решение
Это было бы возможно только в том случае, если бы у вас был атрибут, который был на уровне транзакции, в противном случае ваши меры будут предварительно агрегированы на более высокий уровень.
Если у вас было что -то вроде атрибута [ID 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>