SSAS начальное сальдо - PullRequest
       3

SSAS начальное сальдо

1 голос
/ 06 января 2012

Я строю куб в SSAS, который использует данные движения инвентаря, чтобы показать активность предмета.Образец этих данных можно увидеть здесь (надеюсь, что они читабельны).

Дата = Клиент = Предмет = Количество кол-ва = Кол-во корабля = Движение

1/1/2000 = Cust123 = Item123= 100 = 0 = 100

11/5/2011 = Cust123 = Item123 = 10 = 0 = 10

11/6/2011 = Cust123 = Item123 = 0 = -5 = -5

11/7/2011 = Cust123 = Item123 = 1 = 0 = 1

Цель состоит в том, чтобы включить начальный баланс в куб.Начальное сальдо на определенную дату определяется как сумма всех Движений (из поля Движение) для данного клиента и товара (в моей таблице фактов содержится много разных клиентов и товаров) за все даты до текущей даты.

Таким образом, в примерах данных начальным сальдо на дату 6/11/2011 будет сумма всех Движений (из поля Движение), где клиент и элемент совпадают, а дата меньшечем 06.11.2011.Что может привести к 1/1/2000 в моих образцах данных.

Есть ли способ, с помощью которого MDX может помочь мне достичь этого в моем кубе?Я относительно новичок в SSAS, но я считаю, что у меня должен быть способ включить правильный MDX на вкладке "Расчеты" правильно?Любая помощь будет принята с благодарностью.Спасибо.

Ответы [ 2 ]

4 голосов
/ 06 января 2012

Быстрый грязный способ будет:

sum({null:[Date].[Date Hierarchy].CurrentMember.Lag(1)}, [Measures].[Movement])

Это предполагает несколько вещей:

  1. Ваш CurrentMember из Date Hierarchy будет на дневном уровне.
  2. Ваш набор данных не настолько велик, чтобы эту сумму можно было взять очень быстро.

Если у вас гораздо больший набор данных, и он медленный для вас, вам нужно сначала подвести итоги предыдущих месяцев (или лет, в зависимости от уровня раздела), а затем сделать дни этого месяца. поверх него.

1 голос
/ 08 января 2012

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

Затем вы можете использовать показатель LastNonEmpty (в случае, если у вас версия Enterprise), и он должен быть мгновенным ответом для любого баланса в любом месте.

...