Проблема полуаддитивных мер - сумма снимков за каждый месяц, но не по месяцам

StackOverflow https://stackoverflow.com/questions/1801462

  •  05-07-2019
  •  | 
  •  

Вопрос

Опытный с 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 () начала работать как положено.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top