Я хотел бы создать расчетную меру, которая подводит итог только определенного подмножества записей в моей таблице фактов на основе атрибута размерности.
Данный:
Размер
Меры
Отношения
* LedgerLineItem является вырожденным размером FactLedger
Если я ломаю LedgerAmount LedgerLineItem. Введите я могу легко видеть, сколько заряжено, заплачено, кредит, и т.д., но когда я не ломаю его LedgerLineItem. Введите я не могу легко добавить кредит, заплаченный, кредит, и т.д. в сводную таблицу. Я хотел бы создать отдельные расчетные меры, которые суммируют только определенный тип (или несколько типов) фактов бухгалтерской книги.
Пример желаемого вывода был бы:
| Year | Charged | Total Paid | Amount - Ledger |
| 2008 | $1000 | $600 | -$400 |
| 2009 | $2000 | $1500 | -$500 |
| Total | $3000 | $2100 | -$900 |
Я попытался создать расчетную меру несколько путей, и каждый работает при некоторых обстоятельствах, но не при других. Теперь, прежде чем, как любой говорит, делают это в ETL, я уже сделал его в ETL, и он работает просто великолепно. Что я пытаюсь сделать как часть обучения понять, что MDX лучше должен выяснить, как копировать то, что я сделал в ETL в MDX как до сих пор, я не могу сделать это.
Вот две попытки, которые я предпринял и проблемы с ними. Это работает только, когда тип бухгалтерской книги находится в сводной таблице. Это возвращает корректный объем записей бухгалтерской книги (хотя в этом случае это идентично [сумма - бухгалтерская книга], но когда я пытаюсь удалить тип, и просто получить сумму всех записей бухгалтерской книги это возвращается неизвестный.
CREATE MEMBER CURRENTCUBE.[Measures].[Received Payment]
AS CASE WHEN ([Ledger].[Type].currentMember = [Ledger].[Type].&[Credit])
OR ([Ledger].[Type].currentMember = [Ledger].[Type].&[Paid])
OR ([Ledger].[Type].currentMember = [Ledger].[Type].&[Held Money: Copay])
THEN [Measures].[Amount - ledger]
ELSE 0
END
, FORMAT_STRING = "Currency"
, VISIBLE = 1
, ASSOCIATED_MEASURE_GROUP = 'Ledger' ;
Это работает только, когда тип бухгалтерской книги не находится в сводной таблице. Это всегда возвращает общую сумму платежа, которая является неправильной, когда я режу типом, поскольку я только ожидал бы видеть часть кредита под кредитом, заплаченную часть, под заплаченным, 0$ под зарядом, и т.д.
CREATE MEMBER CURRENTCUBE.[Measures].[Received Payment]
AS sum({([Ledger].[Type].&[Credit]), ([Ledger].[Type].&[Paid])
, ([Ledger].[Type].&[Held Money: Copay])}
, [Measures].[Amount - Ledger])
, FORMAT_STRING = "Currency"
, VISIBLE = 1
, ASSOCIATED_MEASURE_GROUP = 'Ledger' ;
Есть ли любой способ сделать этот возврат корректными числами независимо от ли Ledger. Тип включен в мою сводную таблицу или нет?
Попробуйте СУЩЕСТВОВАТЬ:
CREATE MEMBER CURRENTCUBE.[Measures].[Received Payment]
AS sum(Existing({([Ledger].[Type].&[Credit]), ([Ledger].[Type].&[Paid])
, ([Ledger].[Type].&[Held Money: Copay])})
, [Measures].[Amount - Ledger])
, FORMAT_STRING = "Currency"
, VISIBLE = 1
, ASSOCIATED_MEASURE_GROUP = 'Ledger' ;
Должен обратить внимание на участников в игре.
Я предполагаю, что у измерения Ledger есть ключ в FactLedger, но проблема, заключающаяся в том, что оно не совпадает с первым вычисленным элементом MDX, заставляет меня поверить что вы, возможно, захотите переосмыслить иерахи для этого.
Тогда подойдет простая СУММ, основанная на типе вашей бухгалтерской книги, имеет ли это смысл?