Проблема полуаддитивных мер - сумма снимков за каждый месяц, но не по месяцам
Вопрос
Опытный с SQL, но плохо знакомый с MDX, у меня возникают проблемы с этим:
У меня есть таблица фактов, которая содержит снимки сальдо счетов в месяц. Мне нужно свернуть балансы как полуаддитивную меру - прямая сумма, очевидно, не работает для балансов. Однако мне НЕОБХОДИМО суммировать все остатки за КАЖДЫЙ месяц отдельно, сложив остатки по всем счетам, и, таким образом, «lastnonempty» Понятие не работает для меня тоже. Пример, если факты выглядят так:
Date AccountNo Balance
2009-01-31 1111 $100
2009-01-31 2222 $100
2009-01-31 4444 $100
2009-01-31 5555 $100
2009-02-28 1111 $100
2009-02-28 2222 $200
2009-02-28 3333 $500
2009-02-28 5555 $50
etc.
И у меня есть измерение учетных записей, которое группирует учетные записи в иерархию основных категорий / второстепенных категорий / учетных записей, мне нужен вывод, подобный этому, который суммирует остатки за каждый месяц по всем учетным записям:
Month Total
January 09 $400
February 09 $850
И с разбивкой по типу аккаунта:
Month Total
January 09 $400
Type 1 $200
1111 $100
2222 $100
Type 2 $200
February 09 $850
Type 1 $300
Type 2 $550
НО, остатки НЕ должны суммироваться по месяцам, кварталам или годам, потому что это не имеет смысла, и они будут учитываться дважды. Любой более длительный интервал времени должен показывать закрытие периода:
Quarter WRONG Correct
Q1 $1250 $850 // should be the sum of balances for the *last* month in Q1
Type 1 $500 $300
Type 2 $759 $550
Если я использую акции "lastnonempty" агрегация, я, кажется, получаю только одну, буквальную последнюю строку счета за месяц, а не сумму остатков на счетах за последний месяц. Это похоже на то, что итоговое значение за месяц показывает только баланс, взятый с одного случайного аккаунта в этом месяце, а не итоговое значение. (Я уверен, что это не совсем случайно, вероятно, выбирает один на основе порядка хранения или что-то)
Я уверен, что просто делаю что-то простое, не так ...
Решение
Я думаю, что решил эту проблему: мои исходные данные, имеющие сальдо, были очень редкими - была строка только для ненулевых сальдо, и НЕТ строк для счетов, когда сальдо равно нулю. Это сделало все странным (представьте себе, как инвентарь, где у вас есть количество деталей, и эти числа часто равны нулю, но когда они равны 0, тогда строка просто отсутствует в таблице фактов)
Мне удалось создать представление в источнике данных, которое будет "добавлено обратно". все дополнительные строки с нулевым балансом, а после этого функция ClosingPeriod () начала работать как положено.